我正在查看我的开发人员编写的代码。在其中一个Http处理程序中,它们接收多个长IO请求,它们通过为每个请求手动创建线程并安排它而不是使用ThreadPool来调度。没有在ThreadPool上排队这些请求是有意义的,因为它可能会占用用于提供Web请求的线程。
不是我的问题是,如果我在处理程序中创建后台线程,并且我的应用程序没有收到任何其他http请求,因为空闲时间被定义为终止工作进程。然后我的工作进程将被杀死,这些线程会发生什么?
它们是否会被终止,因为它们没有被标记为前台线程?
答案 0 :(得分:0)
是。它们都是与工作进程一起死亡的同一应用程序域的一部分。正常Thread
如果未标记为IsBackground
,它将基本保持流程开放直至完成。
如果启用了重叠的工作进程(默认情况下为true),这对于新进程启动时出现的新请求不是问题,但如果关闭它,它将等到现有进程退出,基本上停止了网站。
所以,如果你希望它们能够延长寿命,你要么必须增加超时,要么使用IPC等通过一些外部流程处理它们。