在下面的代码片段中,
void foo() {
std::this_thread::native_handle().... //error here
}
int main() {
std::thread t1(foo);
t1.join();
return 0;
}
如何从函数 foo
中的 std::this_thread
获取 native_handle
?
最佳答案
线程无法自动获得对其自身 std::thread
的访问权。这是有意为之的,因为 std::thread
是一种只能移动的类型。
我相信您要求的是 std::thread::id
的 native_handle()
成员,这是一个有趣的建议。据我所知目前是不可能的。它会像这样使用:
void foo()
{
auto native_me = std::this_thread::get_id().native_handle();
// ...
}
它不能保证有效,甚至不存在。但是我想大多数 POSIX 平台都可以支持它。
尝试更改 C++ 标准的一种方法是提交问题。 Here是如何操作的说明。
关于C++11 'native_handle' 不是 'std::this_thread' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52984213/