我相信您永远不必在 .net core web 上下文中使用 Task.Run 进行任何操作。如果您有一个长时间运行的任务或 CPU 密集型任务,您可以将其卸载到消息队列以进行异步处理。如果您有一个同步操作,但没有等效的异步方法,那么卸载到后台线程对您没有任何帮助,实际上会变得更糟。
我缺少什么?在高吞吐量服务器应用程序中使用 Task.Run 是否有真正的理由?
一些简单的例子:
一个日志系统,其中每个工作线程都可以写入队列,并且工作线程负责将项目出队并将其写入日志文件。
要访问具有昂贵初始化的公寓模型 COM 服务器,最好在其自己的线程上保留单个实例。
对于在计时器上运行的逻辑,例如每 10 分钟运行一次的事务,用于更新应用程序变量的某种状态。
CPU 密集型操作,其中个体响应时间比服务器吞吐量更重要。
HTTP 响应完成后必须继续运行的逻辑,例如如果总处理时间超出 HTTP 响应超时。
用于系统操作的工作线程,例如一个长时间运行的线程,用于检查过期的缓存条目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)