如何将 boost::this_thread::get_id() 转换为 int

how could I convert boost::this_thread::get_id() to int?

本文关键字:转换 int id thread boost this get      更新时间:2023-10-16
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

  • http://en.cppreference.com/w/cpp/thread/thread/id/hash

很可能,boost::thread::id也有同样的情况。

所以你可以使用

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

以获得积分表示。当然,(可悲的是)由于这应该用作哈希,因此可能无法保证生成的哈希对于每个线程都是唯一的。您仍然可以很好地查找(版本)库的文档。

但是,仅用于例如.key unordered_map ,您不必担心。

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