Я пытаюсь сделать это с поддержкой параллелизма C++ 11.Правильный способ ожидания переменной состояния, которая уведомляется несколькими потоками
У меня есть пул потоков рабочих потоков, которые все делают то же самое, где главный поток имеет массив переменных условия (по одному для каждого потока, им нужно «запускать» синхронизированный, т. Е. Не запускать один цикл их цикла).
for (auto &worker_cond : cond_arr) {
worker_cond.notify_one();
}
0Показать эту новость от этого потока, чтобы оживить уведомление о каждом потоке пула, чтобы снова запустить его цикл. Каков правильный способ сделать это? Есть ли одна переменная условия и ждать какого-то целого, каждый поток, который не является мастером, будет увеличиваться? что-то вроде (до сих пор в главном потоке)
unique_lock<std::mutex> lock(workers_mtx);
workers_finished.wait(lock, [&workers] { return workers = cond_arr.size(); });
Быстрый поиск: вы считали ['std :: experimental :: барьер'] (http://en.cppreference.com/w/cpp/experimental/barrier)? –