libevent 读书笔记
2016-01-04 17:00
183 查看
libevent 一个很好的底层网路库 事件库
libevent 就是reactor :事件处理程序、事件源、reactor 框架、多路复用机制
1 事件源: Linux上是文件描述符,Windows上就是Socket或者Handle了,这里统一称为“句柄集”;程序在指定的句柄上注册关心的事件,比如I/O事件。
2 event demultiplexer——事件多路分发机制:由操作系统提供的I/O多路复用机制,比如select和epoll。程序首先将其关心的句柄(事件源)及其事件注册到event demultiplexer上;当有事件到达时,event demultiplexer会发出通知“在已经注册的句柄集中,一个或多个句柄的事件已经就绪”;程序收到通知后,就可以在非阻塞的情况下对事件进行处理了。
对应到libevent中,依然是select、poll、epoll等,但是libevent使用结构体eventop进行了封装,以统一的接口来支持这些I/O多路复用机制,达到了对外隐藏底层系统机制的目的。
3 反应器:Reactor,是事件管理的接口,内部使用event demultiplexer注册、注销事件;并运行事件循环,当有事件进入“就绪”状态时,调用注册事件的回调函数处理事件。
对应到libevent中,就是event_base结构体。
4 事件处理程序:事件处理程序提供了一组接口,每个接口对应了一种类型的事件,供Reactor在相应的事件发生时调用,执行相应的事件处理。通常它会绑定一个有效的句柄。对应到libevent中,就是event结构体。
libevent 就是reactor :事件处理程序、事件源、reactor 框架、多路复用机制
1 事件源: Linux上是文件描述符,Windows上就是Socket或者Handle了,这里统一称为“句柄集”;程序在指定的句柄上注册关心的事件,比如I/O事件。
2 event demultiplexer——事件多路分发机制:由操作系统提供的I/O多路复用机制,比如select和epoll。程序首先将其关心的句柄(事件源)及其事件注册到event demultiplexer上;当有事件到达时,event demultiplexer会发出通知“在已经注册的句柄集中,一个或多个句柄的事件已经就绪”;程序收到通知后,就可以在非阻塞的情况下对事件进行处理了。
对应到libevent中,依然是select、poll、epoll等,但是libevent使用结构体eventop进行了封装,以统一的接口来支持这些I/O多路复用机制,达到了对外隐藏底层系统机制的目的。
3 反应器:Reactor,是事件管理的接口,内部使用event demultiplexer注册、注销事件;并运行事件循环,当有事件进入“就绪”状态时,调用注册事件的回调函数处理事件。
对应到libevent中,就是event_base结构体。
4 事件处理程序:事件处理程序提供了一组接口,每个接口对应了一种类型的事件,供Reactor在相应的事件发生时调用,执行相应的事件处理。通常它会绑定一个有效的句柄。对应到libevent中,就是event结构体。
Reactor事件处理流程Reactor事件处理流程
相关文章推荐
- 【题解】QDUOJ.65.again and again
- 使用WindowManager.LayoutParams的x和y设置窗体位置
- 一些java资源
- grep正则表达式-高级
- 一位IT程序员的心声:我们是无耻之徒吗?
- NotePad++ 列模式(在多行开头统一添加相同内容)
- Linux下gsoap实现webservice功能
- Python中的__name__和__main__含义详解
- TreeView递归绑定数据的两种方法
- 蓝桥杯-错误票据 (水)
- Js 中关于注册表单,使用onsubmit进行拦截提交,并判断用户填写的内容是否正确
- jmeter学习 二
- jQuery EasyUI之DataGrid使用实例详解
- mysql备份和还原(1)
- 数组,字符串
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
- Perfect Permutation
- Android 下拉刷新上拉载入效果功能
- 学习通过CSS硬件加速提升你网站的性能
- Delphi Unicode转中文