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

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

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

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


person Lucas    schedule 15.02.2010    source источник


Ответы (1)


В 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).

person Kyle Lutz    schedule 15.02.2010