Здравствуйте, 00011011, Вы писали:
0>Здравствуйте, Zhendos, Вы писали:
Z>> Вообще наследование от QThread это плохой подход в современном Qt.
Z>> Все реализовано так, что можно обойтись без этого.
0>Подскажите какие способы есть хорошие. Отдельные потоки мне нужны только из-за требований к высокой часоте обмена, которая скороее всего подвесит GUI, если делать все в одном потоке.
Ну в потоке QThread уже все есть для того чтобы от него не наследовать, а использовать как есть,
это раньше метод run был чисто абстрактный, теперь он вызывает exec.
Теперь есть сигналы finished где можно освобождать
объекты (можно просто связать с QObject::deleteLater),
сигнал started где можно инициализировать в контексте потока.
Основная идея, которую продвигают разработчики Qt, что QThread это класс
для управления потоками, а не класс для асинхронной работы.
Нужно что-то делать в другом потоке, унаследуйте от QObject,
вызовете moveToThread, свяжите сигналы и слоты QThread с этим QObject и вперед.
Вот статья от разработчиков Qt по этому поводу:
https://www.qt.io/blog/2010/06/17/youre-doing-it-wrong .