如何实现动态线程Boost :: Barrier?

时间:2012-05-10 22:00:46

标签: c++ multithreading boost synchronization boost-thread

通常情况下,一个线程障碍(即boost :: barrier)初始化为一个整数,表示必须调用boost :: barrier :: wait的线程数 - 所有线程在该点等待,直到满足条件,然后是所有线程继续。

是否可以实现一个线程障碍,在初始化之后可以设置'waitCount'?

或者是否有相同的方法会产生相同的行为?

即。在我们完成之后:

int numWaiting = 2;
boost::barrier b( numWaiting );

没有方法可以设置新的numWaiting值;

想要这个的原因基本上是在初始化屏障之后但是在满足等待条件之前,进程可用的线程数可能会增加。

1 个答案:

答案 0 :(得分:1)

您可以将这种行为添加到基于boost :: mutex的简单屏障实现中。 请参阅那里的代码:http://code.google.com/p/fengine/source/browse/trunk/src/engine/misc/barrier.hpp