Я пытаюсь добавить переменную условия в мой код, который использует шаблон фермерства, но я не могу понять, где его использовать. Я думал, что мог бы использовать условную переменную для приостановки потоков, пока они не используются. Кто-нибудь может показать мне пример или указать правильное направление?
Когда я попытался, проверив, пустые ли задачи, меня просто оставили "в ожидании"
Farm.cpp
void Farm::run()
{
//list<thread *> threads;
vector<thread *> threads;
for (int i = 0; i < threadCount; i++)
{
threads.push_back(new thread([&]
{
while (!taskQ.empty())
{
taskMutex.lock();
RowTask* temp = taskQ.front();
taskQ.pop();
taskMutex.unlock();
temp->run(image_);
delete temp;
}
return;
}));
}
for (auto i : threads)
{
i->join();
}
}