Question

Un objet QThread représente un seul fil d'exécution. Mais le thread OS créé lorsque l'objet QThread est créé, ou lorsque la méthode est appelée start()?

Je suis intéressé à savoir si je peux avoir plusieurs objets QThread qui traînent, et le système d'exploitation de créer des fils sur start() et les tuer après le retour de run(), puis je peux réutiliser les objets QThread à nouveau. Mais je ne veux pas détenir des ressources OS alors que les objets QThread ne font rien.

(pour mémoire, je suis au courant de QtConcurrent et QThreadPool, et non, ils ne répondent pas à mes besoins dans cette situation)

Était-ce utile?

La solution

Linux l'objet thread est créé (par pthread_create) au cours du procédé de QThread::start. Il semble peu près la même avec Windows.

Vous pouvez voir ici la source:

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

Fenêtres: http: // qt. gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (ligne 419).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top