如果没有IO线程来处理异步结果会发生什么?

sho*_*der 8 c# async-await

我想知道当没有IO线程来处理异步调用的结果时会发生什么.

假设您发出异步Web请求(在服务器应用程序中,因此所有异步代码都由线程池管理).OS会在有结果时发出信号,当它出现时,你需要一个IO线程来读取套接字中的字节.如果没有可用的IO线程,因为它们都在使用中(所有意味着最多由线程池设置的最大值)会发生什么?是否有一个队列,信号可以等到有线程可用?或者信号是否闻所未闻?如果后者发生,等待等待的代码会发生什么?

Ste*_*ary 5

除非您限制了线程池,否则它将根据需要创建新的I/O线程.信号在类似队列的结构中等待,称为I/O完成端口(IOCP),直到检索到它为止; 信号不会丢失.