c++ - 我如何将 boost::this_thread::get_id() 转换为 int?

标签 c++ boost boost-thread

void Test  
{  
    boost::thread::id id0 = boost::this_thread::get_id();  
    int iThreadId = id0; // ***here, how could I cast 'id0' to 'iThreadId'***  
}

有人能告诉我怎么做吗?

最佳答案

std::hash<>专门用于 std::hash<std::thread::id

可能,boost::thread::id有相同的。

所以你可以使用

 std::hash<boost::thread::id>(thread_id);

得到一个完整的表示。当然,(遗憾的是)因为这应该用作散列,所以可能无法保证每个线程的结果散列都是唯一的。您仍然可以查找您的(版本)库的文档。

但是,仅供用作例如键入 unordered_map ,您不必担心。

或者如果您希望它与您的 c++11 之前的线程解决方案“API 兼容”并且您不介意使用依赖于实现的功能,你可以使用 std::thread::native_handle 。这很可能与您的“旧”线程 API 公开的类型相同。 (std::thread::native_handle_type 是实现定义的)

关于c++ - 我如何将 boost::this_thread::get_id() 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954398/

相关文章:

c++ - 具有两个函数头的菜单驱动程序中的 undefined reference

c++ - 同一个类(class),不同的尺寸......?

c++ - 使用键属性 vector boost 多索引

c++ - boost 路径包含 Mingw 的困境

c++ - 使用 Boost 线程和 io_service 创建线程池

c++ - 用C++点击鼠标

c++ - 用于查找轮廓 : vector deallocation issue 的 OpenCV 示例代码

c++ - 在 C++ 中使用 Boost 从另一个类调用函数

c++ - 如何使用boost fusion获取特定元素的成员名称

c++ - Boost::mutex - 是否可以将它锁定在一个类函数中并在另一个类函数中解锁?