The Modules of Event-driven
2024-09-07 18:32:45
常用的时间驱动模型(Windows和Linux都有)有三种:
1、select
- 对于读(Read)事件、写(Write)事件和异常(Exception)事件分别创建事件描述符集合,分别用来收集读事件的描述符、写事件的描述符和异常事件的描述符;
- 调用底层提供的select()函数,等待事件的发生;
- 轮询所有事件描述符集合中的每一个事件描述符,检查是否有相应的事件发生,如果有就处理。
2、poll
该模型的实现方式与select类似,不同之处在于只创建一个事件描述符集合,在描述符对应的结构上分别设置读事件、写事件和异常事件,最后轮询的时候,可以同时检查这三种事件是否发生。可以说,poll是对select的优化实现。
3、epoll
epoll与前两种相比有很多不同。
- 该模型是通过相关调用通知内核创建一个有N个描述符的事件列表;然后,给这些描述符列表设置所关注的事件,并把它添加到内核的事件列表中去;
- 完成设置之后,epoll就开始等待内核通知事件发生了。某一事件发生后,内核将发生事件的描述符列表上报给epoll。得到事件列表的epoll就可以开始事件处理了。
最新文章
- dockManager中DockPanel的刷新问题!
- Swift设置自动行高
- Python实现各种排序算法的代码示例总结
- 使用excel快速制表 拒绝粗心
- 转:TinyXM--优秀的C++ XML解析器
- csharp: get Web.Services WebMethod
- 在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 ";C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll"; 上。解决方法
- oracle:触发器,自治事务 trigger
- window.showModalDialog 与window.open传递参数的不同?
- Linux学习之路:shell变量(一)
- 最小生成树(MST)[简述][模板]
- OVF文件考究
- 【UML 建模】UML建模语言入门 -- 用例视图详解 用例视图建模实战
- c++编译错误C2971:";std::array";:array_size:包含非静态存储不能用作废类型参数;参见“std::array”的声明
- RocketMQ_问题_启动控制台console报错,connect to <;null>; failed
- close_wait状态和time_wait状态(TCP连接)
- window cmd-常用命令
- 在CAD二次开发中使用进度条
- CAN总线实际运用分析问题。
- 算法设计:UNION-FIND算法实现