Boost asio run vs work(含糊不清)-工作类的目的是什么?

时间:2019-03-18 15:10:06

标签: c++ boost boost-asio

如本示例udp server所示,run方法将使应用程序永远运行。 (已测试)

因此无需使用文档中提到的工作类

从boost文档中: 工作类用于在工作开始和结束时通知io_service。这样可以确保io_service对象的run()函数不会在工作进行时退出,并确保在没有剩余的未完成工作时退出。

1 个答案:

答案 0 :(得分:3)

不推荐使用work类,并已将其替换为executor_work_guard。其目的已在documentation中进行了解释:

  

某些应用程序可能需要在没有更多工作要做时阻止io_context对象的run()调用返回。例如,io_context可能在后台线程中运行,该后台线程在应用程序的异步操作之前启动。通过创建类型为run() [...]

的对象,可以使boost::asio::executor_work_guard<io_context::executor_type>调用保持运行状态