私は最近このstd::threadの参照を見ました。それが言う移動コンストラクタのstd :: thread moveコンストラクタ
:
thread(thread&& other);
移動コンストラクタ。 で表される実行スレッドを表すスレッドオブジェクトを構築します。 この呼び出しの後、otherはもはや の実行スレッドを表していません。
また、以下の例では、これらの線があります。
int n=0;
std::thread t3(f2, n);
std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread
私は理解していない、何が正確にスレッドt3
とt4
で何が起こりますか? t4
はt3
の実行が終了するまで待機しますか? t3
はもはやスレッドではないということは何ですか?
"この呼び出しの後、otherはもはや実行スレッドを表していません"。 – juanchopanza
それはどういう意味ですか?それはすぐにその実行を停止する? –
潜在的に*実行スレッドを表すC++オブジェクトと*実際の実行スレッドとの間には違いがあります。これは 'std :: unique_ptr'がメモリの潜在的な所有権をどのように表しているのかと似ていますが、それ自体はメモリではありません。それは "リソースハンドル"と実際のリソースです。 –