C++ <;视窗>;为什么std::thread::native_handle返回类型为';长无符号整数';而不是void*(又称句柄)?

C++ <;视窗>;为什么std::thread::native_handle返回类型为';长无符号整数';而不是void*(又称句柄)?,c++,windows,multithreading,msys,C++,Windows,Multithreading,Msys,我需要通过msys上的windows SDK挂起windows上的线程。 我试过类似的东西 std::thread thread(somefunction, someparameters); HANDLE handle=thread.native_handle(); SuspendThread(handle); 但是gcc告诉我native_handle()的返回值是'long unsigned int',但不是void*。 所以我试过了 HANDLE handle=reinterpret_c

我需要通过msys上的windows SDK挂起windows上的线程。 我试过类似的东西

std::thread thread(somefunction, someparameters);
HANDLE handle=thread.native_handle();
SuspendThread(handle);
但是gcc告诉我native_handle()的返回值是'long unsigned int',但不是void*。 所以我试过了

HANDLE handle=reinterpret_cast<HANDLE>(thread.native_handle());
HANDLE HANDLE=reinterpret_cast(thread.native_HANDLE());
但是它不起作用,因为当我调用GetLastError()时,我收到了错误代码6,这意味着句柄无效。 我该怎么办?

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

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

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


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

返回的“句柄”仅与
pthread.h
兼容?@Soha“pthread”是POSIX线程系统,与Windows线程系统无关。@Soha不,您只需调用
OpenThread()
从“句柄”(实际上是线程id)检索有用的(Win32)句柄即可由
native\u handle()
返回。我想这是特定于Msys的,在这种情况下,应该更新问题上的标记以反映它。微软的C++库被记录为返回实际的,而不是TID。@ ErrkSun错过了MySyle位(实际上应该在标签列表中,但是提到 GCC < /代码>应该是一个提示)。另一方面,该类型与Windows TID的文档化的
DWORD
类型不匹配。正如您所说,它可能是一个MSYS特定的“句柄”,然后甚至可能是
OpenThread
都无法工作。返回的“句柄”仅与
pthread兼容。h
?@Soha“pthread”是POSIX线程系统,与Windows线程系统无关。@Soha不,您只需要调用
OpenThread()
来检索有用的(Win32)由
native\u handle()
返回的“句柄”(实际上是线程ID)的句柄。我想这是特定于Msys的,在这种情况下,问题上的标记应该更新以反映它。微软的C++库被记录为返回实际的,而不是TID。@ ErrkSun错过了MySyle位(实际上应该在标签列表中,但是提到 GCC < /代码>应该是一个提示)。另一方面,该类型与Windows TID的文档化的
DWORD
类型不匹配。正如您所说,它可能是MSYS特定的“句柄”,然后甚至可能
OpenThread
都无法工作。