C++ 11獲得當前線程ID的可能性,但它不是強制轉換爲整數類型:如何獲得整數線程ID在C++ 11
cout<<std::this_thread::get_id()<<endl;
輸出:139918771783456
cout<<(uint64_t)std::this_thread::get_id()<<endl;
錯誤: 從類型'的std ::螺紋:: ID爲鍵入「uint32_t的」
無效的轉換:從類型'的std ::螺紋:: ID爲鍵入「uint64_t中」 同其他類型的無效的轉換我真的不想做指針轉換來獲得整數線程ID。有沒有合理的方法(標準,因爲我想它是便攜式)做到這一點?
你需要它是一個整數?保證在它上面進行任何類型的算術都是沒有意義的,並且它在進程的上下文之外是沒有意義的,所以除了調試以外,應該不需要序列化它(這似乎是'operator <<'處理得很好)。 –
這樣的事情:http://www.1024cores.net/home/lock-free-algorithms/false-sharing---faalse,而不是N = MAX_THREAD_COUNT我會有像N = 128和做thread_id%N – NoSenseEtAl
如果你真的希望它是可移植的,那麼你需要做好準備,以便'thread :: id'完全不被表示爲整數。您鏈接的頁面使用由線程ID索引的數組。你有沒有考慮過使用'map'來代替?然後,您可以使用已經爲'id'類定義的關係運算符而不進行任何轉換。該標準還定義了「hash 」,因此您也可以使用無序容器。 –