Доброго времени, уважаемые разработчики!
Наткнулся на проблему и что-то мне подсказывает, что здесь должен быть некоторый шаблон, потому что проблема довольно типичная.
Суть:
Есть источник данных, который генерит поток со скоростью 5 Гбит/c (USB 3.0).
Проект пишется на С++ с использованием STL, QWT, QT библиотек.
Нужно обрабатывать этот поток в приложении определенным образом (т.е. выполнение некоторой не сильно грузящей математики) или писать на диск поток в виде бинарного файла.
Опыта решения подобных задач у меня нет, по этому решал, как представлял себе.
После недолгих размышлений, я решил сделать так:
Есть 3 потока и расшаренная неблокируемая очередь
- Поток, принимающий данные с USB и складывающий данные в очередь
- Поток, который в бесконечном цыкле просматривает очередь на наличие объектов. Если очередь имеет объекты,
то поток дастаёт их из очереди и отправляет на дальнейшую обработку (либо пишет в файл, либо как то обрабатывает и выводит на график)
- Поток GUI, в котором рисуется графика и обрабатываются пользовательское взаимодействие
Подскажите пожалуйста, существуют ли типовые приёмы решения подобной задачи? Чем моё решение плохое? Если посоветуете литературу по данному направлению, буду премного благодарен=)
Спасибо всем за участие!