Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果线程池线程死亡,会发生什么情况?_C#_Multithreading_Threadpool - Fatal编程技术网

C# 如果线程池线程死亡,会发生什么情况?

C# 如果线程池线程死亡,会发生什么情况?,c#,multithreading,threadpool,C#,Multithreading,Threadpool,如果某个线程由于某种原因死亡,或者如果我在线程池线程上手动调用“Abort”,会发生什么? NET会重新创建一个新的线程来填补它的空缺,还是线程池最终会耗尽线程 也许这是一个单独的问题,但是线程池处理僵尸进程吗? 如果我将一个包含while(true)循环的任务排队到线程池,它会永远旋转还是线程池最终会杀死这个线程 因此,真正的问题可能是;如果作业从未在.NET线程池中完成,会发生什么情况。 是否以某种方式解决了这些问题?NET线程池使用一种算法来估计在任何时间点都应该处于活动状态的工作线程的最

如果某个线程由于某种原因死亡,或者如果我在线程池线程上手动调用“Abort”,会发生什么? NET会重新创建一个新的线程来填补它的空缺,还是线程池最终会耗尽线程

也许这是一个单独的问题,但是线程池处理僵尸进程吗? 如果我将一个包含while(true)循环的任务排队到线程池,它会永远旋转还是线程池最终会杀死这个线程

因此,真正的问题可能是;如果作业从未在.NET线程池中完成,会发生什么情况。
是否以某种方式解决了这些问题?

NET线程池使用一种算法来估计在任何时间点都应该处于活动状态的工作线程的最佳数量。如果您杀死了这样一个工作线程,那么在下一次检查时将重新创建一个新的工作线程


至于你的第二个问题:非终止任务将被允许无限期运行。但是,考虑工作线程;因此,一旦所有前台线程退出,进程也将退出(杀死后台线程)。

为什么要使用
Thread.Abort()
?只要干净利落地退出线程池方法……我知道,我只是想知道现实中会发生什么——它被一堆玫瑰所掩埋。