Ну вот я создал минимальный пример кода, который зависает с boost-asio - там 3 строчки кода написано. Может, кто-то глянуть, что я не так делаю?...
https://github.com/Pilipets/FreezeProject//Source.cpp
MyClass& ins = MyClass::getInstance();
//MyClass ins;
ins.ioc.post([&] {
boost::system::error_code err;
boost::asio::deadline_timer(ins.ioc, boost::posix_time::milliseconds(1000)).wait(err);
});
Вот это висит при статической инициализации, но работает без проблем, если сделать MyClass ins.
Solution состоит из одной AsioFreeze.dll и Usage.exe
struct ASIOFREEZE_API MyClass {
MyClass();
~MyClass();
static MyClass& getInstance();
boost::asio::io_context ioc;
boost::asio::executor_work_guard<boost::asio::io_context::executor_type> work_guard;
std::thread worker_thread;
};
Edited:
По дебагеру прога висит в io_context - C:\Mine\Additional\vcpkg\installed\x64-windows-v140\include\boost\asio\detail\impl\win_iocp_io_context.ipp, хотя почему - не понятно...