нулевой идентификатор потока [WinAPI] (не дескриптор потока) - PullRequest
1 голос
/ 14 июля 2011

Допустим, я сохраняю DWORD thread_Id в какой-то структуре (WinAPI).
(я спрашиваю о thread_ID, а не thread_handle в этом вопросе. Действительно, их легко обеспечить)

Мне нужно инициализироватьПеременная threadId для некоторого некоторого нулевого значения.

Итак, я собираюсь определить мое значение NULL_THREAD_ID.

Задокументировано ли где-нибудь в msdn, какое значение DWORD реальный поток никогда не может иметь как thread_ID?0 или (DWORD) -1?

   HANDLE WINAPI CreateThread(
     __in_opt   LPSECURITY_ATTRIBUTES lpThreadAttributes,
     __in       SIZE_T dwStackSize,
     __in       LPTHREAD_START_ROUTINE lpStartAddress,
     __in_opt   LPVOID lpParameter,
     __in       DWORD dwCreationFlags,
     __out_opt  LPDWORD lpThreadId
    );

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

GetThreadId, например, дает вам ответ на загадку. Возвращает идентификатор потока и состояния документации:

В случае сбоя функции возвращаемое значение равно нулю.

Следовательно, ноль никогда не может быть действительным идентификатором потока.

0 голосов
/ 14 июля 2011

Да: проверка на CreateThread:

Если функция завершается успешно, возвращаемое значение является дескриптором нового потока.

В случае сбоя функции возвращаемое значение равно NULL.

И NULL = 0.

Обновление: Обратите внимание, что нет потокаидентификатор будет всегда 0.

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