代码之家  ›  专栏  ›  技术社区  ›  simao

事件驱动编程是如何实现的?

  •  6
  • simao  · 技术社区  · 14 年前

    我在看twisted和node.js框架是如何工作的 试图准确理解操作系统如何支持I/O 使用回调的操作。

    我知道这很好,因为我们需要更少的线程,因为我们不需要 需要有等待I/O操作的阻塞线程。但是

    操作系统是如何实现的?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Jeremy W. Sherman    14 年前

    一种方法是让操作系统将任何等待回调的人的信息附加到相关的数据结构中,例如内核中与等待读取通知的文件描述符等价的信息。当文件描述符发生问题时,操作系统会扫描服务生,看看是否应该通知他们。如果他们应该这样做,那么它就这样做了。你可以在 Lemon's paper introducing FreeBSD's kqueue mechanism . 具体见第6节“实施”,第3和第4小节,“事件源活动”和“交付”。

        2
  •  3
  •   Schildmeijer    14 年前

    epoll ,投票, kqueue

    看一看 deft ,尤其是 io/event loop java.nio.channels.Selector 是java nio为此提供抽象的方法。)

    免责声明:我是一个敏捷的提交者