Domanda su implementazione QThread
-
20-09-2019 - |
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)
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).