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.

¿Fue útil?

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

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