IOCP工作原理

我已经有两次面试被问到iocp的工作原理了(操作系统的工作原理,不是函数的工作原理),所以觉得很有必要把这个写下来。网上找了半天,写的都是一些函数的实现原理,没提到重点,最近一次面试中技术官告诉我《windows高级编程指南》这本书有提到过,我回来查看了一下,在614页的确有比较详细的讲解,有点不太明白,先把原文引出来吧:

IOCP工作原理_第1张图片

IOCP工作原理_第2张图片

总结:完成端口的目标是使在释放线程(运行中的线程)列表中的线程数与它被创建时指定的并发线程数(CreateIoCompletionPort的最后一个参数,一般为cpu个数)相同。如果释放线程列表中的一个线程进入等待状态,释放线程列表变小,完成端口就释放另一个等待的线程。所以创建线程的数目应该比指定的并发线程数要多,一般为cpu个数*2+2,据说是性能最佳的个数。

你可能感兴趣的:(网络服务器)