在.NET 中很难找到关于 worker 和 I/O 线程的详细而简单的描述
关于这个话题,我清楚的是什么(但可能不是技术上的精确) :
- 辅助线程是 应该使用 CPU 进行工作的线程;
- I/O 线程(也称为“完成端口线程”) 应该使用设备驱动程序进行工作,实质上是“什么也不做”,只监视非 CPU 操作的完成情况。
不清楚的是:
- 尽管方法 ThreadPool。GetiliableThreads 返回两种类型的可用线程的数量,似乎没有公共 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 线程时更有效地进行上下文切换?