本篇介紹如何取得 C++11 的 std::thread::id,有時候在 C++ 多執行緒的情況下,我們會需要印出 thread id 以方便判斷各自是哪個執行緒,以下範例就是簡單的取得 std::thread::id 的範例。
範例1. 取得 std::thread::id
1 | // g++ std-thread-get-thread-id1.cpp -o a.out -std=c++11 -pthread |
輸出1
2
3foo thread id : 140532863575808
t1 tid: 140532863575808
main tid: 140532880869184
範例2. join 與 detach 的 std::thread::id
1 | // g++ std-thread-get-thread-id2.cpp -o a.out -std=c++11 -pthread |
輸出1
2
3
4
5
6
7
8
9foo start
foo thread id : 140447362262784
foo end
Thread from Main : 140447362262784
sleep 2s
foo start
foo thread id : 140447362262784
foo end
Thread from Main : thread::id of a non-executing thread
參考
How to get a Thread ID ?
https://thispointer.com/c11-how-to-get-a-thread-id/