2010-05-02 4 views
3

У меня есть класс, полученный из QThread, который связывается с основным потоком, отправляя ему QEvents.Какова наилучшая практика для общения с другим потоком в Qt?

Каков наилучший способ связи основного потока со вторым потоком?

Главный поток имеет указатель на второй.

ответ

5

Лучший способ связи между объектами в Qt - использовать сигналы и слоты. Это поточно-безопасный способ, который обрабатывается циклом событий и не требует блокировки с вашей стороны. Вы также можете использовать события, хотя это использование кажется немного странным - событие - это уведомление о происходящем, а не инструмент для общения.

Вы также можете использовать примитивы с потоками, такие как QMutex, QSemaphore, QWaitCondition и QReadWriteLock (то же, что и QMutex, но, как следует из названия, позволяет блокировать чтение или запись не одновременно, а одновременно).

Вы должны прочитать документацию Qt, в частности, я рекомендую вам начать с страницы Thread Support in Qt.

+0

Какой класс был бы хорошим выбором для потока, который работает в течение основного потока и периодически выполняет сетевые запросы? –

+0

Я думаю, что сигналы идеально подходят для этого. В противном случае QReadWriteLock будет работать с общей структурой. – CMircea

+0

@George Edison Вы можете запускать эти сетевые запросы в основном потоке, работая с QTcpSocket в асинхронном режиме (сигналы и слоты usng). – VestniK

 Смежные вопросы

  • Нет связанных вопросов^_^