Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top