スレッドを管理するスレッドのID


スレッドの識別子はスレッドIDであり、スレッドのIDタイプはstd::thread::idであり、取得には2つの方法がある.1つ目は、スレッドに関連付けられたthread objectからobjectを呼び出すことができる.get_id();objectにスレッドが関連付けられていない場合、get_id()はstd::thread::idデフォルトコンストラクション関数を返します.つまり、スレッドはありません.もう1つの方法は、現在実行されているスレッドでstd::this_を呼び出すことです.thread::get_id().
スレッドのIDはコピーして比較できます.2つのスレッドIDが等しい場合、同じスレッドであるか、スレッドに関連付けられていません.2つのIDが異なる場合、それらは異なるスレッドであるか、1つはスレッドに関連付けられ、もう1つはスレッドに関連付けられていない.
std::thread::idはすべての比較オペレータを提供します.関連コンテナ、ソート、または比較を使用できます.
スレッドIDを使用して、このスレッドが何らかの操作を実行する必要があるかどうかを判断することが多い.たとえば、初期化スレッドは、アルゴリズムの異なる部分を実行するために他のスレッドを作成します.このとき,他のスレッドを作成する前に自分のIDを記録してから,他のスレッドを作成する.次に、現在のスレッドが初期化スレッドであるかどうかを判断できます.
std::thread::id master_thread;// ( )
void some_core_part_of_algorithm()
{
	if(std::this_thread::get_id()==master_thread)
		{
			// 
			do_master_thread_work();
		}
		do_common_work();
}

スレッドIDは、関連コンテナのキーとして使用できます.たとえば、コンテナを使用してスレッドを制御して、情報とスレッド間の情報交換を格納することができます.
出力スレッドIDはストリーム出力を使用できます
std::cout<この数値は実は意味がありません.標準ライブラリは、2つのスレッドIDを比較する場合、IDが同じであれば、出力結果が同じでなければ、結果が異なることを保証します.これはデバッグと記録に非常に役立ちます.IDの具体的な数値については、意味がありません.