Jaki byłby to dobry sposób, aby rozwiązać następujący problem w Qt:wielowątkowe przetwarzanie danych rurociągu w Qt
Mam klasy czujnika, który ciągle generuje dane. Na tych danych kilka operacji musi zostać przeprowadzonych po drugim, co może zająć dość długo. Do tego mam kilka dodatkowych zajęć. Zasadniczo, za każdym razem, gdy nagrywany jest nowy element danych, pierwsza klasa powinna uzyskać dane, przetworzyć je, przekazać je do następnego itd.
czujnik -> klasa 1 -> ... -> ostatnia klasa
chcę umieścić poszczególne klasy rurociągu do własnych wątków, tak że klasa 1 może już pracować na próbce n +1, gdy klasa 2 przetwarza próbkę n ...
Również, ponieważ poszczególne kroki mogą znacznie różnić się pod względem wydajności (np. Czujnik jest znacznie szybszy niż pozostałe) i nie interesują mnie przestarzałe dane, chcą, aby klasa 1 (i wszystko, co po niej) zawsze otrzymywało najnowsze dane od swojego poprzednika, odrzucając stare dane. Tak więc nie ma dużego bufora między etapami potoku.
Najpierw pomyślałem o używaniu Qt :: QueuedConnections dla sygnałów/gniazd, ale myślę, że to wprowadziłoby kolejkę pełną przestarzałych próbek czekających na przetworzenie przez wolniejsze części potoku?