【发布时间】:2016-12-24 07:19:14
【问题描述】:
有几个线程在运行,我需要保证我的每个线程都达到了某个点,然后再继续。我需要实施一种障碍。考虑一个可以从多个线程运行的函数func:
void func()
{
operation1();
// wait till all threads reached this point
operation2();
}
使用 C++ 11 和 VS12 实现这一障碍的最佳方法是什么,如果需要,可以考虑提升。
【问题讨论】:
-
简单的方法是将工作分离到两个不同的函数中,在主线程中创建线程来运行前半部分,加入所有线程然后运行后半部分。
-
这实际上会很复杂。我的架构不允许我将工作分开。
-
有一个称为屏障的实际线程原语用于此目的。我知道 pthread 实现了这一点。此外,boost 实现了这一点。
-
this question 的答案似乎很好地涵盖了这一点。
标签: c++ multithreading c++11