V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aiqier
V2EX  ›  程序员

为什么 epoll 不支持本地文件(磁盘 io),但是 kqueue 支持?

  •  
  •   aiqier · 2020-11-16 10:56:36 +08:00 · 1480 次点击
    这是一个创建于 1468 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前只搜到了这些话,但是看的不是特别懂:

    “Kqueue 支持磁盘文件,而 epoll 并不支持所有的文件描述符,它是基于准备就绪模型的。因为磁盘总是基于就绪模型的。”

    感觉疑问挺多的,比如为啥非就绪模型就不行,为啥 kqueue 就不用就绪模型。

    1 条回复    2020-11-16 17:43:13 +08:00
    user8341
        1
    user8341  
       2020-11-16 17:43:13 +08:00
    epoll 在文件描述符可进行 I/O 操作时进行通知,而 kqueue 和 IOCP 都在请求的操作完成时进行通知。

    -

    对于网络来说,可进性 I/O 操作指的是“收到别人发来消息”,此时可以无阻塞地读。
    对于磁盘来说,任何时间都可以进性 I/O 操作,但是无法保证非阻塞。它更适用于操作完成通知这种模式。操作完成就是数据已经从磁盘读到内存 buffer 时。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2656 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:18 · PVG 18:18 · LAX 02:18 · JFK 05:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.