Domanda

sono totalmente nuovo per la programmazione con fili, e poiché la classe usa qthreads, sto chiedendo perché non posso chiamare funzione start di un QThread dall'interno stessa e avere la sua funzione run inizia l'esecuzione indipendentemente altro thread (il programma sembra bloccarsi quando faccio questo). Invece, devo chiamare la funzione di avvio da dove l'oggetto è stato dichiarato. Perché è questo?

Alcuni codice:

class ClassWithThread : public QThread
{
public:
    ClassWithThread() {}
    someFunction() {start();}
    run()
    {
        //do some stuff here
    }
}

Questo è fondamentalmente ciò che fa la mia classe. Quando chiamo someFunction il programma si blocca. Se rimuovo la dichiarazione start da someFunction però, e chiamata start dal di fuori del programma, allora funziona benissimo.

È stato utile?

Soluzione

QThread dovrebbe essere derivata solo se si desidera estendere la capacità filo, di non specializzarsi per il vostro lavoro come questo. Questo articolo aiuterebbe a capire la utilizzare di QThread.

Quindi, è necessario creare un QThread e avviarlo dall'esterno e quindi spostare un oggetto in modo che farà il lavoro. Leggere questo esempio: http: //labs.qt. nokia.com/2006/12/04/threading-without-the-headache/

La speranza che aiuta a evitare questo tipo di problema

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top