首页 > 解决方案 > IIS 和单线程应用程序

问题描述

我想知道托管在 IIS 中的单线程 .NET 应用程序中的请求/响应模型。例如,如果它是一个 WebAPI 应用程序,它是单线程读取一个大文件,处理它(对内容进行一些字符串操作)并在 API 响应中返回已处理的内容,为了论证,我们假设它需要处理文件需要 10 分钟。

现在,我在这里读到 ASP.NET IIS 映射是多线程的:

ASP.NET 是如何多线程的?

那么如果我在一分钟内向同一个 API 发出 20 个请求会发生什么?

  1. 来电者#2等等会发生什么?等待 10 分钟,然后 IIS 才会启动它?
  2. IIS 在哪里跟踪传入的请求?

标签: c#.netmultithreadingiis

解决方案


默认情况下,IIS 会同时处理请求。如果您不主动采取任何措施来阻止它,那么如果 2 个请求同时到达,您将开始在 2 个线程上同时处理同一个文件。

lock(...)如果不需要并发处理,您可以使用其中一种同步原语,例如或互斥锁。然而; 如果处理需要 10 分钟,您确定要将其作为 Web 请求的一部分吗?可能有更好的选择。


推荐阅读