Какова лучшая практика для общения с другой веткой в QT?
-
02-10-2019 - |
Вопрос
У меня есть класс QThread, который общается с основным потоком, отправляя в него Qevents.
Как лучше всего подходит для основной ветки связаться со вторым потоком?
Основная нить имеет указатель на второй.
Решение
Лучший способ общения между объектами в QT - это использовать сигналы и слоты. Это безопасный способ, который обрабатывается петлей события и не требует блокировки с вашей стороны. Вы также можете использовать события, хотя это использование кажется немного странным - событие - это уведомление о том, что происходит, а не инструмент для чата.
Вы также можете использовать примитивы потоков, такие как Qmutex, QSemaphore, QwaitCondition и QreadWritelock (то же самое, что и Qmutex, но, как следует из названия, позволяет записать либо для чтения, либо для написания, а не оба одновременно).
Вы должны прочитать документацию QT, в частности, я рекомендую вам начать с Поддержка потока в QT страница.