在MVC 4中,异步任务的机制是什么?它与普通线程有何关系?请提供详细说明。
如前所述,async
关键字是.Net的一部分。为了更好地实现异步编程,微软发布了几个CTP版本,并且在 .Net 4.5中将成为开箱即用的功能。
以下文章也很有帮助:
http://www.juliencorioland.net/Archives/en-aspnet-mvc-4-asynchronous-controllers
通常,单个ASP.NET页面请求由单个线程处理。线程发送响应后,返回到ASP.NET线程池。
当您使用async
/await
(或异步页面)时,处理请求的线程将请求标记为未完成,然后返回到ASP.NET线程池。稍后,当可等待对象完成时,将分配一个ASP.NET线程来运行方法的其余部分。
更具体地说,默认情况下,async
/await
使用SynchronizationContext
。有关更多详细信息,请参见我的MSDN文章。
异步任务是.NET的一个特性,而不是ASP.NET MVC 4的特性。它们在ASP.NET中的工作方式与其他.NET环境下的工作方式相同。