sim*_*mao 6 io networking asynchronous event-driven nonblocking
我正在研究twisted和node.js框架是如何工作的,我试图准确理解操作系统如何使用回调支持I/O操作.
我理解这很好,因为我们需要更少的线程,因为我们不需要阻塞线程等待I/O操作.但是一旦I/O完成,就必须调用回调.
这是如何通过操作系统实现的?
一种方法是让操作系统附加有关等待回调到相关数据结构的任何人的信息,例如您正在等待读取通知的文件描述符的内核内等效项.当该文件描述符发生某些事情时,操作系统会扫描服务员以查看是否应该通知任何文件描述符.如果他们应该,那么它就这样做了.您可以在Lemon介绍FreeBSD kqueue
机制的文章中阅读有关此内容的一个实现.具体请参见第6节"实施",第3和第4小节,"活动源活动"和"交付".
归档时间: |
|
查看次数: |
1509 次 |
最近记录: |