假设我将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
);
GetThreadId
给出了这个谜题的答案。它返回线程ID和文档状态:
如果函数失败,返回值为0。
因此,0永远不能是有效的线程ID。
是:检查CreateThread
:
如果函数成功,返回值是新线程的句柄。
如果函数失败,返回值为NULL
And NULL = 0.
更新:注意线程标识符永远不会为0