之前介紹過如何取得 C++11 std thread id, 本篇要來介紹 printf 如何印出 std::thread::id,cout 本來就可以印 thread id,例如:cout<<std::this_thread::get_id()<<endl;
,但是要用 printf 或 sprintf 就不得不把 thread id 轉成數字了,以下為紀錄我使用過的方式。
如果想看之前介紹的如何取得 C++11 std thread id,請看這篇。
範例. 不介意真正的 thread id 數字,只是想標記或區別 thread 執行緒的話
使用 hash 的方式,如下所示:1
std::hash<std::thread::id>{}(std::this_thread::get_id())
範例. 用 stringstream 來轉成字串
1 | std::stringstream ss; |
範例. 用 stringstream 來轉成數字
1 | std::stringstream ss; |
參考
c++ - How to get integer thread id in c++11 - Stack Overflow
https://stackoverflow.com/questions/7432100/how-to-get-integer-thread-id-in-c11