首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件驱动编程是如何实现的?

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

Stack Overflow用户
提问于 2010-10-29 04:38:21
回答 2查看 1.6K关注 0票数 6

我一直在研究twisted和node.js框架是如何工作的,我试图确切地理解操作系统是如何使用回调支持I/O操作的。

我知道这很好,因为我们需要更少的线程,因为我们不需要阻塞的线程等待I/O操作。但是一旦I/O完成,就必须调用回调。

这是如何由操作系统实现的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-29 05:09:38

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

票数 5
EN

Stack Overflow用户

发布于 2010-10-29 04:46:00

在操作系统中,这可以通过使用"I/O事件通知工具/接口“来解决,例如epoll、poll、kqueue或select。

看看deft,特别是它的io/event loop,以获得如何使用上面提到的“通知系统”的具体示例。(java.nio.channels.Selector是为此提供抽象的java nio方式。)

免责声明:我是一个灵巧的提交者

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4046994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档