void Test
{
boost::thread::id id0 = boost::this_thread::get_id();
int iThreadId = id0; // ***here, how could I cast 'id0' to 'iThreadId'***
}
有人能告訴我該怎麼做嗎?如何將boost :: this_thread :: get_id()轉換爲int?
void Test
{
boost::thread::id id0 = boost::this_thread::get_id();
int iThreadId = id0; // ***here, how could I cast 'id0' to 'iThreadId'***
}
有人能告訴我該怎麼做嗎?如何將boost :: this_thread :: get_id()轉換爲int?
std::hash<>
是專門爲std::hash<std::thread::id
有可能的,boost::thread::id
具有相同的。
所以,你可以使用
std::hash<boost::thread::id>(thread_id);
得到一個積分表示。當然,(可惜),因爲這應該被用作散列,所以可能不能保證所產生的散列對於每個線程都是唯一的。您仍然會很樂意查找您的(版本)庫的文檔。
然而,僅用於例如關鍵在unordered_map
,你不必擔心它。
或者,如果你想這是「API兼容」與前C++ 11線程解決方案和你不介意使用實現相關的功能,你可以使用std::thread::native_handle
。這很可能與您的'舊'線程API暴露的類型相同。 (std::thread::native_handle_type
是實現定義的)
'boost :: thread :: native_handle'也存在。 –
你爲什麼要這樣做? – orlp
另外,您不能從_object_轉換爲_object_。您將_value_轉換爲_另一種類型_。 – sehe
雖然這個帖子相當陳舊,但我還是會爲那些因爲某些原因需要它的人提供答案。 您可以使用boost :: lexical_cast將boost :: thread :: id轉換爲int(thread_id); –