【发布时间】:2016-02-19 06:17:54
【问题描述】:
背景
我们目前正在开发一个 Web 应用程序,它依赖于 ASP .NET MVC 5、Angular.JS 1.4、Web API 2 和 Entity Framework 6。出于可扩展性的原因,Web 应用程序的繁重性依赖于 async/await 模式。我们的域需要一些 CPU 密集型计算,这可能需要几秒钟( 请参阅 Stephen Cleary's blog post),他们使用了 ConfigureAwait(false)。
示例
public async Task CalculateAsync(double param1, double param2)
{
// CalculateSync is synchronous and cpu-intensive (<10s)
await Task.Run(() => this.CalculateSync(param1, param2))).ConfigureAwait(false);
}
问题
- 在异步 Web API 控制器中使用 Task.Run 进行 CPU 绑定操作是否有任何性能优势?
- ConfigureAwait(false) 真的可以避免创建额外的线程吗?
【问题讨论】:
-
Task.Run 没有创建线程,但我认为正在使用线程池。
-
啊,你完全正确!谢谢指正。
标签: c# asp.net asp.net-mvc async-await task-parallel-library