Вопрос о реализации QThread - PullRequest
       13

Вопрос о реализации QThread

1 голос
/ 16 февраля 2010

Объект QThread представляет один поток выполнения. Но создается ли поток ОС при создании объекта QThread или при вызове метода start()?

Меня интересует, можно ли разместить несколько объектов QThread, и ОС создаст потоки на start() и уничтожит их после возврата run(), а затем я смогу снова использовать объекты QThread. Но я не хочу удерживать ресурсы ОС, пока объекты QThread ничего не делают.

(для справки, я знаю о QtConcurrent и QThreadPool, и нет, они не удовлетворяют мои потребности в этой ситуации)

1 Ответ

6 голосов
/ 16 февраля 2010

В Linux объект потока создается (через pthread_create) во время метода QThread::start. С Windows это выглядит примерно так же.

Вы можете увидеть источник здесь:

Unix: http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_unix.cpp (строка 542).

Windows: http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (строка 419).

...