目前只搜到了这些话,但是看的不是特别懂:
“Kqueue 支持磁盘文件,而 epoll 并不支持所有的文件描述符,它是基于准备就绪模型的。因为磁盘总是基于就绪模型的。”
感觉疑问挺多的,比如为啥非就绪模型就不行,为啥 kqueue 就不用就绪模型。
1
user8341 2020-11-16 17:43:13 +08:00
epoll 在文件描述符可进行 I/O 操作时进行通知,而 kqueue 和 IOCP 都在请求的操作完成时进行通知。
- 对于网络来说,可进性 I/O 操作指的是“收到别人发来消息”,此时可以无阻塞地读。 对于磁盘来说,任何时间都可以进性 I/O 操作,但是无法保证非阻塞。它更适用于操作完成通知这种模式。操作完成就是数据已经从磁盘读到内存 buffer 时。 |