Por qué no puedo llamar a la función de inicio de una clase desde dentro de sí misma?
-
09-10-2019 - |
Pregunta
estoy totalmente nuevo en la programación con hilos, y puesto que la clase está utilizando QThreads, me pregunto por qué no puedo llamar a la función start
de un QThread desde dentro de sí mismo y tener la función de run
comienza la ejecución de forma independiente del otro hilo (el programa parece bloquearse cuando hago esto). En su lugar, tengo que llamar a la función de inicio desde donde fue declarado el objeto. ¿Por qué es esto?
Algunos código:
class ClassWithThread : public QThread
{
public:
ClassWithThread() {}
someFunction() {start();}
run()
{
//do some stuff here
}
}
Esto es básicamente lo que hace mi clase. Cuando llamo someFunction
el programa se bloquea. Si quito la declaración de start
someFunction
embargo, y start
llamada desde fuera del programa, entonces funciona bien.
Solución
QThread
debe derivarse sólo si desea ampliar la capacidad de hilo, no se especializan para su trabajo como este. Este artículo ayudaría a entender el utilizar de QThread
.
Por lo que debe crear un QThread e iniciarlo desde fuera y luego mover un objeto a lo que va a hacer el trabajo. Lee este ejemplo: http: //labs.qt. nokia.com/2006/12/04/threading-without-the-headache/
La esperanza que ayuda a evitar este tipo de problemas