。NET / .NET核心线程池在内部使用两种不同类别的线程:辅助线程和I / O完成端口(IOCP)线程。两者都是普通的托管线程,但是用于不同的目的。通过不同的API(例如Task.Start
或ThreadPool.QueueUserWorkItem
),我可以在工作线程上启动CPU绑定的异步操作(不应阻塞,否则线程池可能会创建其他工作线程)。
但是执行与I / O绑定的异步操作呢? IOCP线程在这些情况下的行为如何?具体来说,我有以下问题:
async await
和SynchronizationContext
呢? IOCP线程是否处理异步I / O响应,然后例如在UI线程上对继续进行排队[](假设未调用ConfigureAwait(false)
)?。NET / .NET核心线程池在内部使用两种不同类别的线程:辅助线程和I / O完成端口(IOCP)线程。两者都是普通的托管线程,但是用于不同的...
Damien和Hans在评论中向我指出了正确的方向,我想在这个答案中进行总结。