Идентификатор потока в Qt - PullRequest
19 голосов
/ 05 июня 2009

Как напечатать идентификатор потока, используя qDebug() в среде Windows Qt.

Ответы [ 3 ]

19 голосов
/ 05 июня 2009

Я предполагаю, что вам нужен идентификатор потока текущего выполняющегося потока (а не идентификатор потока определенного объекта QThread):

qDebug() << QThread::currentThreadId();

Что нужно учесть: метод возвращает идентификатор конкретной платформы (отметьте docs ). В Windows вы не можете использовать этот идентификатор с функциями Win32 API, поскольку он возвращает псевдоидентификатор, а не реальный идентификатор потока.

Если ваше приложение будет работать только в Windows, и вам нужно сделать что-то значимое с идентификатором потока, вероятно, будет лучше, если вы используете GetCurrentThreadId () .

0 голосов
/ 21 августа 2010

Поскольку базовая реализация QThread - это pthreads, вы можете использовать (я предполагаю, что вы хотите использовать полезный идентификатор)

pthread_t = pthread_self();

из потока, который выполняется.

Значение, возвращаемое из QThread :: currentThreadId (), не является переносимым.

0 голосов
/ 05 июня 2009

В Windows приложения обычно «отрываются» от командной строки при их выполнении. Если вы добавите

win32:CONFIG+=console

ваши приложения будут блокировать командную строку и печатать операторы qDebug.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...