如果您总是在等待响应,为什么在IIS / MVC中使用异步?

时间:2015-04-20 21:58:32

标签: asp.net-mvc iis async-await

我知道在某些情况下异步调用可能是一个有用的工具。如果您在处理异步调用时能够执行其他操作,则可以加快应用程序的运行。

但是,在IIS中运行的MVC应用程序中,我没有看到代码的任何好处,例如:     var result = await SignInManager.PasswordSignInAsync(model.Username,model.Password,model.RememberMe)

我的理解是IIS已经将请求分配给它可用的线程,如果你总是等待,那么产生新线程就不会买任何东西。在这个例子中,我们所做的只是为上下文切换增加一些开销。由于" await",分配用于处理请求的线程在任何时候都不会被释放。

我错过了什么吗?在我们等待的时候,线程是否可供IIS使用?如果我们总是等待来自某个方法的响应,是否有异步使它异步进入?

1 个答案:

答案 0 :(得分:0)

  如果你总是等待

,那么产生一个新线程就不会买任何东西

您遇到的大多数异步方法do not spawn a thread。相反,他们会启动一些外部操作,然后在操作完成时完成Task

  

由于" await"

,因此不会在任何时候释放分配用于处理请求的线程。

除此之外。请求处理与线程无关。当您await时,您的当前线程被释放,可以自由处理其他请求。完成await后,请求的处理将继续从池中的某个线程开始(可能与以前相同,或者它可能是不同的线程)。