<Windows>为什么 std::thread::native_handle return 类型的值是 'long long unsigned int' 而不是 void* (a.k.a.HANDLE)?

<Windows>Why does std::thread::native_handle return a value of type 'long long unsigned int' instead of void* (a.k.a. HANDLE)?

我需要通过 msys 上的 Windows SDK 在 windows 上挂起一个线程。 我试过类似

std::thread thread(somefunction, someparameters);
HANDLE handle=thread.native_handle();
SuspendThread(handle);

但是 gcc 告诉我 native_handle() 的 return 值是 'long long unsigned int' 而不是 void*。 所以我尝试了

HANDLE handle=reinterpret_cast<HANDLE>(thread.native_handle());

但它不起作用,因为当我调用 GetLastError() 时,我收到错误代码 6,这意味着句柄无效。 我该怎么办?

返回的“句柄”是线程 id 而不是 CreateThread 返回的 HANDLE

您需要使用 OpenThread 从 id 中获取句柄。