【问题标题】:how could I convert boost::this_thread::get_id() to int?如何将 boost::this_thread::get_id() 转换为 int?
【发布时间】:2013-09-24 21:27:13
【问题描述】:
void Test  
{  
    boost::thread::id id0 = boost::this_thread::get_id();  
    int iThreadId = id0; // ***here, how could I cast 'id0' to 'iThreadId'***  
}

谁能告诉我怎么做?

【问题讨论】:

  • 你为什么要这样做?
  • 另外,您不能将 object 转换为 object。您将 转换为 另一种类型
  • 虽然这个帖子比较老了,但我还是会为那些出于某种原因需要它的人回答。您可以使用 boost::lexical_cast(thread_id); 将 boost::thread::id 转换为 int

标签: c++ boost boost-thread


【解决方案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-06-13
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多