在.NET中很难找到对工作线程和I/O线程的详细而简单的描述
关于这个话题,我很清楚(但在技术上可能不准确):
- 工作线程是should使用CPU进行工作的线程;
- I/O线程(也称为"完成端口线程")should为它们的工作使用设备驱动程序,并且本质上"什么也不做",只监视非CPU操作的完成.
目前尚不清楚的是:
- 虽然方法是线程池.GetAvailableThreads返回两种类型的可用线程数,似乎没有公共API来安排I/O线程的工作.只能在中手动创建工作线程.网
- 似乎单个I/O线程可以监控多个I/O操作.是真的吗?如果是,为什么线程池默认情况下有这么多可用I/O线程?
- 在一些文本中,我读到了I/O线程执行I/O操作完成后触发的回调.是真的吗?考虑到此回调是CPU操作,这不是工作线程的作业(job)吗?
- 更具体地说,做ASP.NET异步页面用户I/O线程?将I/O工作切换到单独的线程,而不是增加工作线程的最大数量,究竟有什么性能优势?是因为单个I/O线程监视多个操作吗?或者Windows在使用I/O线程时会进行更高效的上下文切换?