C++ std::this_thread::get_id() でスレッドの識別子を取得2020年09月30日 12時05分46秒

スレッドを生成するとそれぞれに識別子が与えられる。std::this_thread::get_id() で現在のスレッドの識別子が取得できる。
% cat thread_id.cpp
#include <thread>
#include <iostream>

void print( int n )
{
    std::cout << n << ' ' << std::this_thread::get_id() << std::endl;
}

int main()
{
    print( 0 );
    std::thread t( print, 1 );

    t.join();
}
コンパイルして実行した結果。スレッドライブラリを使うので -lptherad が必要になる。
% c++ -std=c++11 thread_id.cpp -lpthread
% ./a.out 
0 0x20762000
1 0x20762300
% ./a.out
0 0x20762000
1 0x20762300
上記の結果は FreeBSD で実行した結果。スレッドの識別子は環境依存なので他のアーキクチャでは実行結果の表示の仕方が異なる。

次回