null线程标识符[WinAPI](不是线程句柄)

时间:2011-07-13 20:00:58

标签: winapi

假设我将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 个答案:

答案 0 :(得分:2)

例如,

GetThreadId为您提供了解谜的答案。它返回线程ID和文档状态:

  

如果函数失败,则返回值为零。

因此,零永远不能是有效的线程ID。

答案 1 :(得分:0)

是:请查看CreateThread

如果函数成功,则返回值是新线程的句柄。

如果函数失败,则返回值为NULL。

并且NULL = 0。

Update: 请注意,任何线程标识符都不会为0。