Что не так с этой многопоточной программой на C++?C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Что не так с этой многопоточной программой на C++?

Сообщение Гость »


Я пишу многопоточную программу на C++, используя std::thread, которая выглядит следующим образом:

#include #include #include #include использование пространства имен std; const int threadNum = 4; мьютекс мт[threadNum]; условие_переменная cv[threadNum]; поток threadList[threadNum]; bool threadWork[threadNum]; недействительная работа (int id) { в то время как (истина) { unique_lock lck(mt[id]); cv[id].wait(lck, [&]() { return threadWork[id]; }); // ждем входящих задач // сделай что-нибудь threadWork[id] = ложь; cv[id].notify_all(); } } интервал основной() { for (int я = 0; я < threadNum; я ++) { threadWork = ложь; threadList = поток (работа, я); } в то время как (истина) { for (int я = 0; я < threadNum; я ++) { // распределяем задачи по каждому потоку threadWork = правда; cv.notify_all(); } for (int я = 0; я < threadNum; я ++) { // ждем, пока все задачи закончатся unique_lock lck(mt); cv.wait(lck, [&]() { return !threadWork; }); cout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»