通常,线程屏障(即 boost::barrier)用一个整数初始化,该整数表示必须调用 boost::barrier::wait 的线程数 - 所有线程都在该点等待,直到满足条件,然后所有线程继续。
是否可以实现一个线程屏障,它可以在初始化后设置其“waitCount”?
或者是否有提供相同行为的等效方法?
即完成后:
int numWaiting = 2;
boost::barrier b( numWaiting );
没有设置新的 numWaiting 值的方法;
想要这样做的原因基本上是进程可用的线程数可能会在屏障初始化之后但在满足等待条件之前增加。
最佳答案
您可以将此类行为添加到基于 boost::mutex 的简单屏障实现中。 请参阅此处的代码:http://code.google.com/p/fengine/source/browse/trunk/src/engine/misc/barrier.hpp
关于c++ - 如何实现动态线程Boost::Barrier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542774/