常用的时间驱动模型(Windows和Linux都有)有三种:

1、select

  • 对于读(Read)事件、写(Write)事件和异常(Exception)事件分别创建事件描述符集合,分别用来收集读事件的描述符、写事件的描述符和异常事件的描述符;
  • 调用底层提供的select()函数,等待事件的发生;
  • 轮询所有事件描述符集合中的每一个事件描述符,检查是否有相应的事件发生,如果有就处理。

2、poll

该模型的实现方式与select类似,不同之处在于只创建一个事件描述符集合,在描述符对应的结构上分别设置读事件、写事件和异常事件,最后轮询的时候,可以同时检查这三种事件是否发生。可以说,poll是对select的优化实现。

3、epoll

epoll与前两种相比有很多不同。

  • 该模型是通过相关调用通知内核创建一个有N个描述符的事件列表;然后,给这些描述符列表设置所关注的事件,并把它添加到内核的事件列表中去;
  • 完成设置之后,epoll就开始等待内核通知事件发生了。某一事件发生后,内核将发生事件的描述符列表上报给epoll。得到事件列表的epoll就可以开始事件处理了。

最新文章

  1. dockManager中DockPanel的刷新问题!
  2. Swift设置自动行高
  3. Python实现各种排序算法的代码示例总结
  4. 使用excel快速制表 拒绝粗心
  5. 转:TinyXM--优秀的C++ XML解析器
  6. csharp: get Web.Services WebMethod
  7. 在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll" 上。解决方法
  8. oracle:触发器,自治事务 trigger
  9. window.showModalDialog 与window.open传递参数的不同?
  10. Linux学习之路:shell变量(一)
  11. 最小生成树(MST)[简述][模板]
  12. OVF文件考究
  13. 【UML 建模】UML建模语言入门 -- 用例视图详解 用例视图建模实战
  14. c++编译错误C2971:"std::array":array_size:包含非静态存储不能用作废类型参数;参见“std::array”的声明
  15. RocketMQ_问题_启动控制台console报错,connect to <null> failed
  16. close_wait状态和time_wait状态(TCP连接)
  17. window cmd-常用命令
  18. 在CAD二次开发中使用进度条
  19. CAN总线实际运用分析问题。
  20. 算法设计:UNION-FIND算法实现

热门文章

  1. PyQt5入门教程
  2. 大数据之Hudi + Kylin的准实时数仓实现
  3. 动作函数-web_url
  4. tensorflow-TFRecord 文件详解
  5. 关于自动寻路(Navigation)的初级总结
  6. 为Promise添加finally方法支持,把小程序函数变成promise函数
  7. Github仓库如何选择开源许可证
  8. maven跳过测试打包
  9. ubuntu无法安装vim、tree等解决办法
  10. caffe的python接口学习(4)mnist实例手写数字识别