Задать вопрос
@pixik

Как реализовать архитектуру многопоточного приложения для отрисовки графика?

Доброго времени, уважаемые разработчики!
Наткнулся на проблему и что-то мне подсказывает, что здесь должен быть некоторый шаблон, потому что проблема довольно типичная.

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

Опыта решения подобных задач у меня нет, по этому решал, как представлял себе.
После недолгих размышлений, я решил сделать так:
Есть 3 потока и расшаренная неблокируемая очередь
  1. Поток, принимающий данные с USB и складывающий данные в очередь
  2. Поток, который в бесконечном цыкле просматривает очередь на наличие объектов. Если очередь имеет объекты,
    то поток дастаёт их из очереди и отправляет на дальнейшую обработку (либо пишет в файл, либо как то обрабатывает и выводит на график)
  3. Поток GUI, в котором рисуется графика и обрабатываются пользовательское взаимодействие


Подскажите пожалуйста, существуют ли типовые приёмы решения подобной задачи? Чем моё решение плохое? Если посоветуете литературу по данному направлению, буду премного благодарен=)
Спасибо всем за участие!
  • Вопрос задан
  • 604 просмотра
Подписаться 1 Оценить Комментировать
Ответ пользователя Владимир Мартьянов К ответам на вопрос (2)
@vilgeforce
Раздолбай и программист
Ваше решение сходу плохо только тем, что второй поток данные "выводит на график". Дергать гуй из побочного потока - плохая идея, будут странные и плохоуловимые баги с большими шансами. А так все ок, на мой взгляд.
Ответ написан