1

我希望我的线程在障碍点停止,但我只想在需要障碍时停止。例如,在某个计时器间隔之后,我希望所有线程都形成一个屏障。有没有设置潜在障碍点的方法?例如在每个函数的开始。我想要这样的东西。

void some_function()
{
 potentially_barrier_wait;
 ......
}

所以我只想potentially_barrier_wait在需要时调用屏障,否则potentially_barrier_wait什么也不做。这件事能不能圆满实施?这是否也适用于已经存在障碍的程序,还是会与它们竞争。

4

1 回答 1

1

取决于你所说的屏障的意思......如果你指的是简单的同步,你可以这样做:

在 Windows 上,创建一个事件 CreateEvent(0, false, 0, 0)。在您的线程中,对其执行 WaitForSingleObject 。在您的“控制”线程中, SetEvent 让它通过您的障碍。您可以使用它进行预设和自动释放等。

在 Linux 上,类似,但您可以使用 pthread_cond_timedwait 作为屏障,并使用 pthread_cond_signal 发出信号。

于 2012-09-13T20:04:52.657 回答