Pregunta

Tengo un QThread que lee a partir de una toma de corriente y envía una (señal QT) de señal cuando haya datos disponibles. Esto sería fácil con el bloqueo de lectura (2), pero tengo que ser capaz de detener el hilo desde fuera sin esperar demasiado tiempo.

Si estuviera usando pthread usaría pselect y pthread_kill(thread_id, some_signal), pero no lo hace QThread parecen tener ningún métodos similares. Y la adición de un dependcy en pthread a este proyecto no parece elegante.

Asimismo, no quiero utilizar los otros métodos feos como constantemente tratando de leer de la toma con un poco de tiempo de espera relativamente pequeño.

Edit: Las tomas no son TCP, pero bluetooth L2CAP

.
¿Fue útil?

Solución

A no demasiado elegante, pero simple y solución de trabajo: Crear un tubo y dejar que seleccione espera para el tubo o, mi zócalo. De esta manera puedo detener la espera en cualquier momento escribiendo algo a la tubería.

Otros consejos

En lugar de tratar con el mismo roscado puede utilizar la interfaz asíncrona de QTcpSocket. Echa un vistazo a la fortuna cliente ejemplo.

Se puede enviar una señal al terminate() ranura de su QThread. Esto impedirá que el hilo de acuerdo con políticas de planificación del sistema operativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top