Domanda

Un oggetto QThread rappresenta un singolo thread di esecuzione. Ma è il filo sistema operativo creato quando viene creato l'oggetto QThread, o se il metodo start() si chiama?

Mi interessa se posso avere diversi oggetti QThread in giro, e il sistema operativo di creare discussioni su start() e li uccidono dopo ritorna run(), e poi posso riutilizzare il QThread oggetti di nuovo. Ma io non voglio tenere le risorse del sistema operativo, mentre gli oggetti QThread non stanno facendo nulla.

(per la cronaca, io sono a conoscenza di QtConcurrent e QThreadPool, e no, non soddisfano i miei bisogni in questa situazione)

È stato utile?

Soluzione

In Linux viene creato l'oggetto thread (via pthread_create) durante il metodo QThread::start. Sembra circa lo stesso con Windows.

È possibile vedere la fonte qui:

Unix: http: // qt. gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_unix.cpp (linea 542).

di Windows: http: // qt. gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (linea 419).

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