Предположим, что у меня есть код следующим образом:
int Main()
{
if (true)
{
new Thread(()=>
{
doSomeLengthyOperation();
}).Start();
}
while (true)
{
//do nothing
}
}
Есть 2 потока, я собираюсь вызывать Main thread поток, который выполняет функцию Main(), и поток, который обновляется внутри теста "if" как Thread A.
Мой вопрос в том, когда Thread A будет уничтожен? Удастся ли выполнить doSomeLenghtyOperation()?
Поскольку ссылок на Thread A нет, будет ли он помечен как кандидат на сбор мусора:
- Сразу после завершения самой новой инструкции Thread(). Start()?
- Сразу после завершения "if (true)" области?
- После завершения выполнения doSomeLengthOperation()?
- Никогда?
Все примеры, которые я вижу, являются Main(), содержащими ссылку, а затем Main thread, ожидающие соединения с потоком A перед выходом. Мне любопытно, какова продолжительность жизни кода выше.
Спасибо заранее!