Quelle est la meilleure pratique pour communiquer avec un autre thread dans Qt?
-
02-10-2019 - |
Question
I ai une classe dérivée QThread qui communique avec le fil principal en envoyant QEvents à elle.
Quelle est la meilleure façon pour le thread principal pour communiquer avec le second fil?
Le fil principal a un pointeur vers le deuxième.
La solution
La meilleure façon de communiquer entre des objets dans Qt est d'utiliser des signaux et des fentes. Il est un moyen de thread-safe qui est géré par la boucle d'événements et ne nécessite aucun verrouillage de votre part. Vous pouvez également utiliser des événements, bien que l'utilisation semble un peu bizarre -. Un événement est une notification de quelque chose qui se passe, pas un outil pour discuter
Vous pouvez également utiliser des primitives de filetage comme QMutex, QSemaphore, QWaitCondition et QReadWriteLock (comme un QMutex, mais comme il nom l'indique, vous permet de verrouiller soit pour la lecture ou l'écriture, pas les deux en même temps).
Vous devriez lire la documentation Qt, en particulier, je vous recommande de commencer avec le Support fil dans Qt .