У меня есть epoll для получения входящих событий и помещения их в очередь заданий.
Когда событие помещается в очередь заданий, для пробуждения рабочих потоков отправляется условный сигнал pthread.
Однако я столкнулся с проблемой, когда все рабочие потоки заняты, и Джобс хранит стеки в очереди.Это серьезная проблема, потому что, если задания суммируются и новое событие не наступает через некоторое время, задания в очереди не будут переданы рабочим потокам.
Как только поток станет доступным, я бы хотел, чтобы они моглипринимать задания из очереди заданий автоматически (если возможно).
Есть ли еще способ сделать это?Все, о чем я могу думать, - это добавить наблюдателя очереди и посылать условный сигнал с интервалами.
Кроме того, я знаю, что очередь STL не является поточно-ориентированной.Означает ли это, что мне нужно каждый раз блокировать Mutex, когда я получаю доступ к очереди STL?Разве это не замедляет мой рабочий процесс?
Любые предложения по решению этой проблемы будут великолепны.