pyC*_*hon 11 c++ c++11 stdthread
在以下代码段中,
void foo() {
std::this_thread::native_handle().... //error here
}
int main() {
std::thread t1(foo);
t1.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你如何获得的native_handle从std::this_thread从函数内foo?
How*_*ant 13
线程无法自主获取自己的访问权限std::thread.这是有目的的,因为它std::thread是一种仅移动类型.
我相信你要求的是一个native_handle()成员std::thread::id,这是一个有趣的建议.据我所知,目前还不可能.它将被用作:
void foo()
{
auto native_me = std::this_thread::get_id().native_handle();
// ...
}
Run Code Online (Sandbox Code Playgroud)
它不能保证工作,甚至不存在.但是我想大多数POSIX平台都可以支持它.
尝试更改C++标准的一种方法是提交问题. 以下是如何操作的说明.
C ++ 11没有提供获取当前线程native_handle的机制。您必须使用平台特定的调用,即Windows上的GetCurrentThread():
void foo()
{
auto native_me = ::GetCurrentThread();
}
Run Code Online (Sandbox Code Playgroud)