我怎么能将boost :: this_thread :: get_id()转换为int?

时间:2013-09-23 08:02:07

标签: 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'***  
}

有人可以告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

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

可能boost::thread::id也是一样。

所以你可以使用

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

获得完整的表示。当然,(遗憾的是)因为它应该被用作散列,所以可能无法保证所产生的散列对于每个线程都是唯一的。您仍然可以查找(库版)库的文档。

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

或者如果您希望这与您的pre-c ++ 11线程解决方案“API兼容”,您不介意使用与实现相关的功能,你可以使用 std::thread::native_handle 。这很可能与您的“旧”线程API所暴露的类型相同。 (std::thread::native_handle_type是实现定义的)