0

我想知道如何让 io 执行诸如 thread.join() 之类的操作以等待所有任务完成。

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

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

4

1 回答 1

1

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

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

于 2013-06-20T16:23:16.720 回答