可能我脑子里有些乱七八糟的东西,但我发现以下情况有些混乱:
我的问题是:我是否真的受益于在API操作中构建和运行任务?据我所知,将线程返回到ASP.NET线程池ASAP的目标已经由ApiController.ExecuteAsync基础结构执行,因此额外级别的异步不会给我任何东西(除非我需要取消任务或在后端执行操作)平行)。
有什么想法?感谢。
答案 0 :(得分:4)
与任何并行编程一样,遗憾的是答案:它完全取决于您正在进行的处理类型。
首先,ASP.NET运行时已经为每个请求提供了并发性。因此,如果您正在进行的工作完全是计算绑定的,那么使用异步几乎没有什么好处。该规则的例外情况是,您在请求中处理的数据非常大,因此可以从进一步的并发中受益。
使用异步的最重要方案是在进行任何类型的I / O工作时(磁盘I / O 或网络I) / O)。例如,当您的ASP.NET控制器代码...
您希望在这些情况下使用async,因为在满足I / O请求时有等待时间:磁盘或网络延迟。通过使用异步,您可以释放原本会被阻塞等待该数据的CPU线程,以便它可以处理其他一些计算绑定工作。