我对asio的提升还是个新手,在调用了work_gaurd reset函数后,我试着让它干净的退出。下面是我试图让它工作的代码。然而,我无法获得“IO上下文停止”的打印
有什么我遗漏的吗?
int main() {
boost::asio::io_context ioContext;
auto work = boost::asio::make_work_guard(ioContext);
ioContext.post([]() {
std::cout << "Task executed on thread: " << std::this_thread::get_id()
<< std::endl;
});
std::thread ioThread([&ioContext]() { ioContext.run(); });
std::this_thread::sleep_for(std::chrono::seconds(2));
work.reset();
//! ioContext.stop();
ioThread.join();
std::cout << "IO context stopped." << std::endl;
return 0;
}
1条答案
按热度按时间inkz8wg91#
代码很好(尽管这里的work-guard完全是多余的):
Live On Coliru
测试与
印刷品,例如
奖金
注意,结果是the same without the guard。更简单的是使用
thread_pool
,这意味着一个工作保护:Live On Coliru