从多个线程

时间:2018-02-12 10:32:58

标签: c++11 boost-asio

在我的服务器应用程序中,有一个调用io_service run()函数的线程池。当处理程序抛出异常时,run函数也会抛出该异常。多个线程在try catch块中调用run函数。要重新启动事件处理程序,我需要再次调用run,但文档声明必须首先调用restart()。重新启动io_service必须确保所有运行调用都已完成。当其他线程仍在调用run函数时,我该怎么做?

1 个答案:

答案 0 :(得分:2)

  

要重新启动事件处理程序,我需要再次调用run,但文档声明必须首先调用restart()。

文档这样说。一旦服务用完/已停止,您需要重置。你没有做过,所以你不需要在那里重置。

只需按照此帖Should the exception thrown by boost::asio::io_service::run() be caught?(链接到docs

中的说明进行操作