如本示例udp server所示,run方法将使应用程序永远运行。 (已测试)
因此无需使用文档中提到的工作类
从boost文档中: 工作类用于在工作开始和结束时通知io_service。这样可以确保io_service对象的run()函数不会在工作进行时退出,并确保在没有剩余的未完成工作时退出。
答案 0 :(得分:3)
不推荐使用work
类,并已将其替换为executor_work_guard
。其目的已在documentation中进行了解释:
某些应用程序可能需要在没有更多工作要做时阻止io_context对象的
的对象,可以使run()
调用返回。例如,io_context可能在后台线程中运行,该后台线程在应用程序的异步操作之前启动。通过创建类型为run()
[...]boost::asio::executor_work_guard<io_context::executor_type>
调用保持运行状态