为什么 epoll 不支持本地文件(磁盘 io),但是 kqueue 支持?
資深大佬 : aiqier 2
目前只搜到了这些话,但是看的不是特别懂:
“Kqueue 支持磁盘文件,而 epoll 并不支持所有的文件描述符,它是基于准备就绪模型的。因为磁盘总是基于就绪模型的。”
感觉疑问挺多的,比如为啥非就绪模型就不行,为啥 kqueue 就不用就绪模型。
大佬有話說 (1)
目前只搜到了这些话,但是看的不是特别懂:
“Kqueue 支持磁盘文件,而 epoll 并不支持所有的文件描述符,它是基于准备就绪模型的。因为磁盘总是基于就绪模型的。”
感觉疑问挺多的,比如为啥非就绪模型就不行,为啥 kqueue 就不用就绪模型。
–
对于网络来说,可进性 I/O 操作指的是“收到别人发来消息”,此时可以无阻塞地读。
对于磁盘来说,任何时间都可以进性 I/O 操作,但是无法保证非阻塞。它更适用于操作完成通知这种模式。操作完成就是数据已经从磁盘读到内存 buffer 时。