архитектура consumer/producer threads
Здравствуйте!
Не могу найти оптимальное решение для моей проблемы, поэтому обращаюсь за советом как грамотно построить архитектуру приложения.
В общем ситуация такая: producer thread производит данные (читает данные с сетевухи. после того, как пакеты соберутся выходная информация представляет собой uchar массив размером 3000 байт), consumer thread эти данные обрабатывает. Требуется эти два потока как-то состыковать, чтобы producer не терял пакеты и consumer своевременно обрабатывал.
Я пытался складывать данные в циркулярный буфер на семафорах (см. пример Qt) и потом в потоке обработке считывать, но это решение грузит процессор , относительно конечно, но для моей задачи процент загрузки не приемлим. Можно ли слать данные сигналом и как в таком случае быть уверенным, что все данные автоматически встанут в очередь и не потеряются?
Как грамотно решаются подобные задачи? Заранее спасибо!.
ps: время обработки данных является не постоянной величиной