Pregunta sobre la aplicación QThread
-
20-09-2019 - |
Pregunta
Un objeto QThread representa un único hilo de ejecución. Pero es la hebra de OS que se crea cuando se crea el objeto QThread, o cuando el método start()
se llama?
Estoy interesado en saber si puedo tener varios objetos QThread por ahí, y el sistema operativo a crear hilos en start()
y matarlos después vuelve run()
, y luego puedo volver a utilizar el QThread objetos nuevo. Pero no quiero guardar los recursos del sistema operativo, mientras que los objetos QThread no están haciendo nada.
(para el registro, soy consciente de QtConcurrent y la QThreadPool, y no, no satisfacen mis necesidades en esta situación)
Solución
En Linux se crea el objeto hilo (a través de pthread_create
) durante el método QThread::start
. Se ve casi lo mismo con Windows.
Se puede ver aquí la fuente:
Unix: http: // qt. gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_unix.cpp (línea 542).
Windows: http: // qt. gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (línea 419).