我希望线程在障碍点处停止,但仅在需要障碍时才停止。例如,在某个计时器间隔之后,我希望所有线程形成障碍。有没有办法设置潜在的障碍点?例如,在每个功能启动时。我想要这样的东西。

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

因此,我希望potentially_barrier_wait仅在需要时才调用障碍,否则potentially_barrier_wait不执行任何操作。这个东西可以令人满意地实现吗?这是否还会在已经存在障碍的程序中起作用,还是会与它们竞争呢?

最佳答案

取决于您所说的障碍...如果您指的是简单同步,则可以这样进行:

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

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

关于c++ - 我们可以将程序中的潜在障碍称为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12411887/

10-12 16:09