当等待任务.为计算绑定操作运行时,等待是否使用IOCP



我理解通过IO执行的事情的重叠IO,比如发送SQL查询或HTTP请求。因此,当执行await http.GetAsync(url)时,我假设内部已经对重叠的IO操作进行了排队,并且当ICOP发出信号时,我的执行将继续。

然而,当我们在线程池工作线程(如await Task.Run(() => CalculatePrimeNumbersFirst(n))(中运行纯计算绑定的东西时,调用Task.Run的线程是否真的被阻止了,因为没有注册实际的IOCP?

我认为我在线程池中执行的回调向awaiter发出信号,并自行继续执行,但我找不到一个很好的解释。

await Task.Run(() => CpuOperations())只会从池中选择一个空闲线程,并从中执行您的委托。

然后,执行将简单地通知await的状态机其完成,并且所选的同步上下文将继续执行您的下一行代码。

不会等待和/或使用实际的IO端口。

最新更新