• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aiqier
V2EX  ›  程序员

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

  •  
  •   aiqier · Nov 16, 2020 · 2246 views
    This topic created in 2026 days ago, the information mentioned may be changed or developed.

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

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

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

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

    -

    对于网络来说,可进性 I/O 操作指的是“收到别人发来消息”,此时可以无阻塞地读。
    对于磁盘来说,任何时间都可以进性 I/O 操作,但是无法保证非阻塞。它更适用于操作完成通知这种模式。操作完成就是数据已经从磁盘读到内存 buffer 时。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1111 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 18:26 · PVG 02:26 · LAX 11:26 · JFK 14:26
    ♥ Do have faith in what you're doing.