Здравствуйте, remark, Вы писали:
R>А в чём именно проблема?
R>Установить всем потокам флаги на остановку. Потоки перед завершением снимают все эелменты из своей очереди и удаляют. Заджоинить потоки. Всё.
R>
Ну так это я тоже понимаю. Потоки висли на этом
request* dequeue()
{
boost::unique_lock<boost::mutex> lock (mtx);
while (queue.empty())
cv.wait(lock); //<======
request* req = queue.front();
queue.pop_front();
return req;
}
Я при завершении рассылал им broadcast. Но так как очередь пустая, то там и оставалось. пришлось добавить выход с этого цикла по условной переменной.
Сейчас все вроде работает. будет тестировать под нагрузкой.