在.NET中很难找到工作者和I/O线程的详细但简单的描述
我对这个主题有什么了解(但可能在技术上不精确):
- 工作线程是应该为其工作使用CPU的线程;
- I/O线程(也称为"完成端口线程")应该为其工作使用设备驱动程序,并且基本上"什么都不做",只监视非CPU操作的完成.
不清楚的是:
- 虽然方法ThreadPool.GetAvailableThreads返回两种类型的可用线程数,但似乎没有公共API来为I/O线程安排工作.您只能在.NET中手动创建工作线程?
- 似乎单个I/O线程可以监视多个I/O操作.这是真的吗?如果是这样,为什么ThreadPool默认有这么多可用的I/O线程?
- 在某些文本中,我读到了I/O线程执行I/O操作完成后触发的回调.这是真的吗?考虑到这个回调是CPU操作,这不是工作线程的工作吗?
- 更具体一点 - ASP.NET异步页用户I/O线程吗?将I/O工作切换到单独的线程而不是增加最大工作线程数的性能有什么好处?是因为单个I/O线程确实监视多个操作吗?或者Windows在使用I/O线程时进行更有效的上下文切换?