我正試圖用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)? –