Domanda

Ho un QThread che contiene un QUDPsocket (socket è membro non locale per QThread :: run (), forse dovrei cambiare che da quello che sto leggendo). Questo QThread viene istanziato nella mia classe QMainWindow cioè il filo GUI (Non chiedo mossa a filo). È ancora sicuro da usare waitForReadyRead o ho assolutamente bisogno di istanziare il QThread in main.cpp o chiamare il moveToThread () per essere thread-safe. Io sono sempre intermittente doppia eccezione gratuito all'interno della chiamata alla waitForReadyRead nel modo attuale di farlo (a volte io non farlo per giorni a volte dopo 3 minuti).

È stato utile?

Soluzione

Date un'occhiata alla Qt documentazione per QUdpSocket. C'è una nota si spiega la classe è rientrante . Anche dal Qt documentazione :

  

... una classe si dice essere rientranti se le sue funzioni membro possono essere richiamate in modo sicuro da più thread, purché ciascun filo utilizza una diversa istanza della classe.

Quindi, per rispondere alla tua domanda, ma in realtà non importa quale sia il genitore del QThread è, finché è assicurarsi che l'istanza QUdpSocket che si sta utilizzando viene creata un'istanza all'interno del contesto del thread che si sta utilizzando in.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top