C++11 'native_handle' 不是 'std::this_thread' 的成员

标签 c++ c++11 stdthread

在下面的代码片段中,

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::idnative_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/

相关文章:

c++ - 对象 c++ 之前的预期主表达式

c++ - (简单) boost 线程组问题

c++ - 拥有多态对象集合的首选 C++ 习惯用法是什么?

c++ - 我可以使用基于范围的 for 循环轻松迭代 map 的值吗?

c++ - pthread_cancel后"terminate called without an active exception"

c++ - 在 C++ 中创建未初始化的 std::thread 时出现错误 C2280

c++ - 类内的 stable_sort

c++ - 如何在 C++ 上获取文件夹及其子文件夹名称和路径中的所有文件到字符串数组?

c++ - 如何为模板类型创建别名?

c++ - 在 C++11 中的 std::thread 退出时自动调用函数