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 に答える