【发布时间】:2016-07-20 18:24:48
【问题描述】:
我正在尝试使用 C++11 并发支持来做到这一点。
我有一种工作线程的线程池,它们都做同样的事情,其中一个主线程有一个条件变量数组(每个线程一个,它们需要“启动”同步,即不提前运行一个周期他们的循环)。
for (auto &worker_cond : cond_arr) {
worker_cond.notify_one();
}
那么这个线程必须等待池中每个线程的通知才能再次重新启动它的循环。这样做的正确方法是什么?有一个条件变量并等待某个整数,每个不是主线程的线程都会增加?类似的东西(仍在主线程中)
unique_lock<std::mutex> lock(workers_mtx);
workers_finished.wait(lock, [&workers] { return workers = cond_arr.size(); });
【问题讨论】:
-
一个小问题:你考虑过
std::experimental::barrier吗?
标签: c++ multithreading c++11 concurrency