首页 > 其他分享 >.net控制器接口为什么要用 async/await?

.net控制器接口为什么要用 async/await?

时间:2022-10-13 14:01:04浏览次数:97  
标签:API 异步 调用 Run await Task 线程 async net

避免阻塞调用

ASP.NET Core 应用应设计为可同时处理许多请求。 异步 API 允许较小线程池处理数千个并发请求,无需等待阻塞调用。 线程可以处理另一个请求,而不是等待长时间运行的同步任务完成。

ASP.NET Core 应用中的一个常见性能问题是阻塞可以异步进行的调用。 许多同步阻塞调用都会导致线程池饥饿和响应时间降低。

禁止行为:

  • 通过调用 Task.Wait 或 Task<TResult>.Result.
  • 获取常见代码路径中的锁。 当构建为并行运行代码时,ASP.NET Core 应用的性能最高。
  • 调用 Task.Run 并立即等待它。 ASP.NET Core 已经在普通线程池线程上运行应用代码,因此调用 Task.Run 只会导致不必要的额外线程池计划。 即使计划的代码会阻止某个线程,Task.Run 也不会阻止该线程。

建议做法:

  • 使热代码路径成为异步。
  • 如果有异步 API 可用,则异步调用数据访问、I/O 和长时间运行的操作 API。 请勿用于Task.Run使同步 API 异步。
  • 使控制器/Razor Page 操作成为异步。 为了获益于 async/await 模式,整个调用堆栈都是异步的。

标签:API,异步,调用,Run,await,Task,线程,async,net
From: https://www.cnblogs.com/cplmlm/p/16787939.html

相关文章