1

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

是否可以实现一个线程屏障,它可以在初始化后设置其“waitCount”?

还是有一种等效的方法可以提供相同的行为?

即在我们完成之后:

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

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

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

4

1 回答 1

1

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

于 2012-05-11T07:13:10.970 回答