4

実行が完了した後のスレッドの状態は?

実行直後に破棄するか、親スレッドで破棄するか。

4

1 に答える 1

4

オブジェクトは、std::thread基になる制御スレッドとは異なります (ただし、1 対 1 でマップする必要があります)。

この分離は非常に重要でありstd::thread、制御のスレッドの存続期間が異なる可能性があることを意味します。たとえばstd::thread、スタック上に作成する場合thread::detach、オブジェクトが破棄される前に実際に呼び出す必要があります (デストラクタがない場合はterminateを呼び出します)。また、Grizzly が指摘したよう.join()に、スレッドの実行が完了するまでブロックするオブジェクトの破棄の前に呼び出すことができます。

これはあなたの質問にも答えます-std::threadオブジェクトはスレッドが終了した後に破棄されません-他のすべてのC++オブジェクトと同じように動作します-スコープ外に出る(または取得するdeleted)と破棄されます.

于 2013-09-18T10:29:14.253 に答える