0

我正在查看我的开发人员编写的代码。在其中一个 Http 处理程序上,它们接收多个长 IO 请求,它们通过为每个请求手动创建线程并对其进行调度而不是使用 ThreadPool 来调度这些请求。不在 ThreadPool 上对这些请求进行排队是有意义的,因为它可能会占用用于服务 Web 请求的线程。

不是我的问题是,如果我在处理程序中创建了一个后台线程并且我的应用程序在定义的空闲时间内没有收到任何其他 http 请求以终止工作进程。然后我的工作进程将被杀死,这些线程会发生什么?

他们是否也会因为没有被标记为前台线程而被终止?

4

1 回答 1

0

是的。它们都是与工作进程一起死亡的同一个应用程序域的一部分。Thread如果没有标记为正常,因为IsBackground它基本上会保持进程打开直到它完成。

如果您启用了重叠的工作进程(默认情况下为 true),这对于进入的新请求来说不是问题,因为新进程将启动,但如果您将其关闭,它将等到现有进程退出,基本上会停止站点.

所以真的,如果你想让他们活得更久,你要么必须增加超时,要么让他们使用 IPC 等由一些外部进程处理。

于 2013-06-06T13:27:39.163 回答