No estoy llamando exec()
en mi código, pero el timer
y QUdpSocket
está funcionando bien. ¿exec()
solía esperar a que continúe un event
?llamando al método QThread.exec() es necesario en QThread?
ACTUALIZACIÓN: el timer
estaba funcionando, porque no me había llamado moveToThread(this)
en el QThread
, lo que significaba que el QThread
en realidad era todavía parte de la main thread
. En cuanto a QUdpSocket
bien I utilizando la encuesta functions
. Entonces no necesitó trabajar con signals
.
Consejo: Si necesita hacer init
cosas, que requiere una event loop
en su QThread
, puede llamar delay
moveToThread
hasta que no necesita el signals
más, que es práctico cuando el programa se está cargando. Tampoco necesita llamarlo en el constructor (puede llamarlo dentro de run()
por ejemplo), simplemente copie el puntero this QThread
en una variable y haga el call
más tarde/en otro lugar usando el puntero.
¿Qué quiere decir con "colocar un bucle de ejecución"? ¿Quiere decir llamar QThread.exec() o crear instancias de un bucle de QEvent (aunque no veo por qué tendría que hacer esto porque QThread proporciona uno pero la respuesta es escrito me hace pensar en eso) –
evento loop es cualquier cosa que hace exec() y bloquea el código _after_ esa declaración class.exec(). En este caso, está destinado a ser QThread.exec(). Nota: Si la frecuencia de la señal es baja, puede descartar la idea de los hilos, ya que la mayoría de los comandos Qt que consumen parte del tiempo son asíncronos. – drahnr
así que digamos que tengo un temporizador. Ahora si quiero que mi temporizador funcione, necesito llamar al ejecutivo. pero ¿y si necesito hacer un procesamiento en un bucle en mi método de ejecución, necesitaría llamar a Exec una vez en cada ciclo? ¿Qué pasa si el temporizador no está cerca de ser hecho y quiero hacer el mayor procesamiento posible mientras el temporizador se agota? Lo leí en alguna parte usando un temporizador con 0 timeout es útil para administrar el evento. –