【发布时间】:2016-10-14 15:52:11
【问题描述】:
我正在使用boost::asio 编写服务器。我有多个线程,每个线程都拥有它自己的 io_service 对象。当没有要执行的完成处理程序时,我使用io_service::work 对象来保持io_service 运行。在某个时刻,我正在调用io_service 对象的stop 方法来完成调用io_serice::run 的线程。但是在某些情况下,当我调用stop 时,我已经在io_service 中发布了尚未完成的对象竞争处理程序。调用stop 会阻止发布的竞争处理程序执行,但这对我来说是不可接受的,因为我需要在停止线程之前完成所有待处理的工作。如何在调用io_service 的stop 方法之前等待所有待处理的完成处理程序首先执行?
【问题讨论】:
标签: c++ multithreading boost boost-asio