すでにstd::thread
クラスがある場合、なぜstd::this_thread
名前空間が必要ですか?std :: thread class vs std :: this_thread C++のネームスペース?
これらの基本的な違いは何ですか?
std::thread
クラスはいつ使用しますか?std::this_thread
名前空間はいつ使用しますか?
すでにstd::thread
クラスがある場合、なぜstd::this_thread
名前空間が必要ですか?std :: thread class vs std :: this_thread C++のネームスペース?
これらの基本的な違いは何ですか?
std::thread
クラスはいつ使用しますか?std::this_thread
名前空間はいつ使用しますか?
this_thread
名前空間グループは現在のスレッドにアクセスする関数なので、現在のスレッドで何か処理が必要な場合は、スレッドのthread
オブジェクトにアクセスする必要はありません。
スレッドクラスは降伏とスリープのためのアクセスを提供しません。これらの関数は現在のスレッドに対してのみ意味があり、したがってthis_thread
名前空間にあります。
別のスレッドに関する情報が必要な場合は、そのスレッドのthread
インスタンスが必要です。現在のスレッドにアクセスする必要がある場合は、this_thread
名前空間内の関数を使用して常に行うことができます。 this_thread名前空間の使用は、あなたが要求しているとき、明確にするために
this_thread名前空間
注:
this_thread
名前空間を使用するためのの考えも拡張の草案で説明されています現在のスレッドのid、子スレッドのid。このアクションのget_id名は、インターフェースの概念的なフットプリントを減らすために同じままです。この設計は、cancellation_requested機能に適用されます。
std::thread my_child_thread(f); typedef std::thread::id ID: ID my_id std::this_thread::get_id(); // The current thread's id ID your_id my_child_thread.get_id(); // The child thread's id bool have_i_been_canceled = std::this_thread::cancellation_requested(); // Current thread's cancellation status bool have_you_been_canceled = my_child_thread.cancellation_requested(); // Child thread's cancellation status
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2320.html
thread
クラスの静的メンバーが行われている可能性がthis_thread
名前空間から機能を追加したが、その後get_id
機能がなければならないでしょう既に存在するスレッドクラスのget_id
関数とは明確に区別するために、何か別のものと呼ばれることがあります。言い換えれば、私の推測では、C++チームは、これらの関数が現在のスレッドを読み込みまたは操作していたことをより明確にするために、関数を別の名前空間に追加することを決めたということです。スレッドクラスのメンバ
std::thread
は
std::this_thread
、新しいスレッドを作成、監視および操作するために使用されるalreay作成されたスレッド内部で使用されています。
std::thread
のパブリッククラス内で静的メソッドとして提供することができましたが、これは設計上の決定です。このようなデザインはJavaのようなものであり、ネームスペースとしてデータをカプセル化する方が多くC++ - 哲学チューニングされた種類のデザイン。
これらのドキュメントがある場合は... – juanchopanza
[参照ドキュメント](http://en.cppreference.com/w/cpp/thread)を読んでいると思いますが、それは基本的に'std :: thread'の機能です。あなたはより具体的になりますか、実際にあなたには分かりません。 –