最近开始拜读侯捷译注的《multithreading applications in win32》,以增强对windows线程的理解。
今天看到一处对线程ID与Handle的叙述,似乎有点问题。
书中原文:
“为了安全防护的缘故,你不可能根据一个线程的ID而获得其handle。”
—— 摘自第一篇(上路吧,线程)中第二章(线程的第一次接触)第三节(核心对象)第一段末尾
而根据MSDN的描述,我们是可以通过OpenThread,根据线程ID获取线程handle的:
HANDLE WINAPI OpenThread( _In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwThreadId );
前提是OpenThread的调用者传入的access right能通过thread安全性描述的检查;或者调用者启动了SeDebugPrivilege权限。
注:该API支持windows XP及以上系统
不知此处是否有误,望各位不吝赐教!