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