Was ist die beste Praxis mit einem anderen Thread in Qt für die Kommunikation?
-
02-10-2019 - |
Frage
Ich habe eine QThread Klasse abgeleitet, dass kommuniziert mit dem Haupt-Thread von QEvents um es zu senden.
Was ist der beste Weg für den Haupt-Thread mit dem zweiten Thread zu kommunizieren?
Der Haupt-Thread hat einen Zeiger auf den zweiten.
Lösung
Der beste Weg zwischen Objekten in Qt zu kommunizieren ist, Signale und Slots zu verwenden. Es ist eine Thread-sichere Art und Weise, die von der Ereignisschleife behandelt und erfordert keine Verriegelung auf Ihrer Seite. Sie können auch Ereignisse verwenden, obwohl, dass die Verwendung ein wenig seltsam scheint -. Ein Ereignis eine Benachrichtigung von etwas passiert ist, nicht ein Werkzeug zum Chatten
Sie können auch Primitiven wie QMutex, QSemaphore, QWaitCondition und QReadWriteLock verwenden Threading (gleiche wie ein QMutex, aber wie es der Name schon sagt, können Sie Sperre entweder zum Lesen oder Schreiben, nicht beide gleichzeitig).
Sie sollten die Qt-Dokumentation lesen, speziell empfehle ich Sie mit der Thread-Unterstützung in Qt starten Seite.