2014-01-17 125 views
2

會發生什麼,如果出於某種原因線程死亡或者如果我手動調用「中止」上一個線程池線程? .NET會重新創建一個新的槽來填充它的槽,否則最終會導致線程池完全耗盡線程?如果一個ThreadPool線程死亡會發生什麼?

也許這是一個單獨的問題,但確實線程池處理殭屍進程? 如果我排隊,在這一段時間(true)循環任務的線程池,將它永遠自旋或將線程池最終殺死這個線程?

所以,真正的問題可能是,如果一個作業永遠不會在.NET線程池中完成,會發生什麼情況。 不知何故照顧?

+2

爲什麼你會使用'Thread.Abort()'?乾淨*退出線程池方法* ... –

+0

我知道,我只是想知道實際上會發生什麼 –

+0

它被埋在一堆玫瑰之下。 – Mehrdad

回答

2

.NET線程池使用hill-climbing算法來估計在任何時間點應該處於活動狀態的工作線程的最佳數量。如果你殺死了這樣一個工作者線程,那麼下一個檢查就會重新創建一個新線程。

至於你的第二個問題:一個非終止任務將被允許無限期地運行。但是,工作線程被認爲是background threads;所以一旦你的前臺線程退出,你的進程也將退出(殺死後臺線程)。

相關問題