Pregunta

documentación QThread::terminate() afirma que no se recomienda para terminar un hilo llamando a esta función.
En mi programa, tengo que terminar un hilo antes de que termine la ejecución. El flujo está realizando algún cálculo pesada y quiero que el usuario tenga control para detener el cálculo.
¿Cómo puedo hacer que en lugar de llamar QThread::terminate()?

¿Fue útil?

Solución

Establecer una bandera desde fuera del hilo que se comprueba por el cálculo dentro de la rosca y detener el cálculo si se establece el indicador.

Otros consejos

El uso de banderas es una obvia y la forma más común de hacer el truco, pero si se está trabajando en una plataforma Linux / Unix aconsejaría que use tubos en su lugar. Yo tenía el mismo problema por el que he utilizado una bandera (esto hace que el threadunsafe código, y los errores que surjan de dicha bandera son difíciles de rastrear), luego cambiado la implementación de utilizar tubos que eran una forma eficaz de hacer lo necesario.

Si lo desea, para una plataforma Linux te puedo mostrar cómo utilizar tubos para terminar un QThread.

También puede tener ventanas equivalente de tuberías, que no sé mucho acerca de lo que no he hecho gran parte de la programación en la plataforma Windows.

Espero que esto ayude

mejor es utilizar bandera + mutex que hará que el hilo solución segura.

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