为什么很多人说I / O完成端口是快速而好的模式? 什么是I / O完成端口的优点和缺点? 我想知道一些比其他模式更快的IOCP。 如果你可以解释一下比较其他模型(select,epoll,传统的multithreading/进程),那会更好。
在.NET中很难find对worker和I / O线程的详细而简单的描述 关于这个话题,我很清楚(但在技术上可能并不精确): 工作者线程是应该为他们的工作使用CPU的线程; I / O线程(也称为“完成端口线程”) 应该使用设备驱动程序进行工作,实质上“什么都不做”,只监视非CPU操作的完成情况。 什么不明确: 虽然方法ThreadPool.GetAvailableThreads返回两种types的可用线程的数量,似乎没有公共API来安排I / O线程的工作。 你只能在.NET中手动创build工作线程? 看来,单个I / O线程可以监视多个I / O操作。 这是真的吗? 如果是这样,为什么ThreadPool在默认情况下有很多可用的I / O线程? 在一些文本中,我读到了在I / O线程完成I / O操作完成后触发的callback。 这是真的吗? 考虑到这个callback是CPU操作,这对于工作线程来说不是一个工作吗? 更具体的 – 做ASP.NETasynchronous页面用户I / O线程? 切换I / O工作来分离线程,而不是增加最大工作线程数,性能究竟有什么好处? 是否因为单个I / O线程监视多个操作? 或者,当使用I / O线程时,Windows会更有效地切换上下文吗?