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

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

4

1 回答 1

1

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是实现定义的)

于 2013-09-23T08:05:41.420 回答