在http处理程序中创建后台线程
本文关键字:创建 后台 线程 程序 http 处理 | 更新日期: 2023-09-27 18:17:25
我正在查看开发人员编写的代码。在一个Http处理程序上,它们接收多个长IO请求,它们通过为每个请求手动创建线程并调度它而不是使用ThreadPool来调度它。不把这些请求放在ThreadPool上排队是有意义的,因为它可能会占用用于服务web请求的线程。
不是我的问题是,如果我在处理程序中创建一个后台线程,并且我的应用程序没有收到任何其他http请求的空闲时间定义来杀死工作进程。然后我的工作进程将被杀死,这些线程将发生什么?
它们也会因为没有被标记为前台线程而被终止吗?
是。它们都属于与工作进程一起死亡的同一个应用程序域。对于正常的Thread
,如果没有标记为IsBackground
,它将基本上保持进程打开,直到完成。
如果你启用了重叠的工作进程(默认为true),这对新请求来说不是问题,因为新进程将启动,但如果你关闭它,它将等待,直到现有的进程退出,基本上停止站点。
所以如果你真的想让它们活得更长,你要么必须增加超时时间,要么让它们由一些外部进程使用IPC等来处理