【发布时间】:2021-08-22 03:03:36
【问题描述】:
所以Task.Yield 将立即将执行返回给调用者,实质上是在它返回的任务的延续中继续执行它 (Task.Yield)。
假设一个没有SynchronizationContext 的 Asp.Net Core 应用程序与等待Task.Yield 并将该延续传递给Task.Run 有任何功能区别吗?
【问题讨论】:
-
我假设您的问题具有教育目的。出于实际目的,如果您的意图是强制切换到
ThreadPool,则像 noseratio 的SwitchTo这样的专用机制将清楚地传达此意图,并稳健地执行此行为,而不是依赖可能产生的Task.Yield之类的机制这种行为是偶然的,具体取决于应用程序的环境状态。 -
@TheodorZoulias 是的,你的假设是正确的。
-
代码已经在线程池线程中运行。为什么要强制上下文切换和使用更多线程?
-
@PauloMorgado 你能详细说明你说的话吗?这对我来说没有意义。什么代码已经在线程池线程中运行?
标签: c# asp.net-core async-await