BOOST ASIO使用

时间:2013-06-20 15:31:32

标签: boost boost-asio

我想知道如何让io做类似thread.join()的事情等待所有任务完成。

io_type->post(  strand->wrap(boost::bind &somemethod,ptr,parameter)));

在上面的代码中,如果最初启动4个线程,这将为下一个可用线程提供工作。但是我想知道如何才能真正等待所有线程完成工作。就像我们使用threads.join()一样。

1 个答案:

答案 0 :(得分:1)

如果确实需要这样做,那么您可以设置一个互斥或关键部分来阻止您的io处理程序处理来自套接字的消息。这需要从另一个线程激活。但是,更重要的是......

也许你应该重新考虑你的设计。让io等待其他线程完成的问题是io会没有响应。一般来说,不是一个好主意。我怀疑大多数开发网络软件的开发人员都不会考虑它。如果由于正在进行的其他处理而接收到尚未准备好处理的消息,则考虑将它们存储在队列中,并在其他线程发出已完成其工作的信号时在不同的线程上处理它们。 / p>