次のようなコードがあるとします。
int Main()
{
if (true)
{
new Thread(()=>
{
doSomeLengthyOperation();
}).Start();
}
while (true)
{
//do nothing
}
}
2つのスレッドがあります。メインスレッドをMain()関数を実行しているスレッドと呼び、「if」テスト内でスレッドAとして新しく作成されたスレッドを呼び出します。
私の質問は、スレッドAはいつ破壊されるのですか?doSomeLenghtyOperation()は完了まで実行できますか?
スレッドAを指す参照がないため、ガベージコレクションの候補としてマークされますか?
- 「newThread()。Start()」ステートメント自体が終了した直後?
- 「if(true)」スコープが終了した直後?
- doSomeLengthOperation()が実行されて終了した後?
- 一度もない?
私が見るすべての例は、参照を保持しているMain()と、終了する前にスレッドAとの結合を待機しているメインスレッドです。上記のコードの存続期間が何であるか興味があります。
前もって感謝します!