Frage

Ich habe ein QThread, das ein Qudpsocket enthält (Socket ist nicht lokal zu Qthread :: run (), vielleicht sollte ich das von dem ändern, was ich lese). Dieses QThread wird in meiner QMainWindow -Klasse instanziiert, dh der GUI -Thread (ich rufe nicht zum Thread an). Ist es immer noch sicher, WaitForreadyRead zu verwenden, oder muss ich das QThread in Main.cpp instanziieren oder MoveTotHread () aufrufen, damit er sicher ist. Ich bekomme eine zeitweilige doppelte freie Ausnahme im Anruf zum WaitForreadyread in der gegenwärtigen Art und Weise (manchmal bekomme ich es tagelang nicht tagelang nach 3 Minuten).

War es hilfreich?

Lösung

Schauen Sie sich das an die QT -Dokumentation zum QUdpSocket. Es gibt eine Notiz, in der die Klasse erklärt wird, dass es sich um die Klasse handelt wieder eingetreten. Auch von der QT -Dokumentation:

... Eine Klasse soll wieder eingetragen sein, wenn ihre Mitgliedsfunktionen sicher aus mehreren Threads aufgerufen werden können, solange jeder Thread eine andere Instanz der Klasse verwendet.

Um Ihre Frage zu beantworten, spielt es also keine Rolle, was der Elternteil der QThread ist, solange Sie sicherstellen, dass die QUdpSocket Instanz, die Sie verwenden, wird im Kontext des Threads instanziiert, in dem Sie ihn verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top