私は、c++ 0x (C++11) に存在するマルチスレッドの新しいサポートを経験していました。
そのため、スレッドごとに std::thread:id 型の一意の識別子があります。
以下のサンプル プログラムを検討してください。
void hello_world()
{
std::cout<<"hello_world \n";
}
int main()
{
std::cout<<"Main thread id is "<<std::this_thread::get_id()<<"\n";
std::thread t(hello_world);
std::cout<<"Child thread id is ";
std::cout<<t.get_id()<<"\n";
t.join();
}
次のようなサンプル出力が得られました。
メインスレッド ID は 140502917359424 です
子スレッド ID は 140502900623104 です
こんにちは世界
サンプル出力のメイン スレッドのスレッド ID は、子スレッド ID のスレッド ID より大きくなっています。
スレッド ID は、開始時刻とは完全に独立していますか?
そうでない場合: スレッド T1 がスレッド T2 よりも早く開始されたかどうかをスレッド ID だけで区別する方法はありますか?