Многопоточный конвейер обработки данных в Qt

Что было бы хорошим способом решить следующую проблему в Qt:

У меня есть класс датчика, который непрерывно производит данные. С этими данными необходимо выполнить несколько операций за другой, что может занять довольно много времени. Для этого у меня есть несколько дополнительных занятий.По сути, каждый раз, когда записывается новый элемент данных, первый класс должен получать данные, обрабатывать их, передавать следующему и так далее.

сенсор -> класс 1 -> ... -> последний класс

Я хочу поместить отдельные классы конвейера в их собственные потоки, чтобы класс 1 уже мог работать с образцом n + 1 когда класс 2 обрабатывает образец n ...

Кроме того, поскольку отдельные шаги могут сильно отличаться по своей производительности (например, датчик работает намного быстрее остальных), и меня не интересуют устаревшие данные, мне нужен класс 1 (и все, что после него), чтобы всегда получать самые новые данные от своих предшественников, отбрасывая старые данные. Итак, нет большого буфера между этапами конвейера.

Сначала я подумал об использовании Qt :: QueuedConnections для сигналов / слотов, но я предполагаю, что это приведет к появлению очереди, полной устаревших образцов, ожидающих обработки более медленными частями конвейера?

11
задан user1041903 11 November 2011 в 15:26
поделиться