Идентификатор потока в Qt

Как распечатать идентификатор потока с помощью qDebug() в среде Windows Qt.

Ответ 1

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

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

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

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

Ответ 2

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

win32:CONFIG+=console

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

Ответ 3

Так как базовая реализация QThread является pthreads, вы можете использовать (я предполагаю, что вы хотите использовать ID)

pthread_t = pthread_self();

из исполняемого потока.

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