我正试图用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'](http://en.cppreference.com/w/cpp/experimental/barrier)? –