当前位置: 首页 > news >正文

select、poll、epoll 区别有哪些

文章目录

    • select、poll、epoll 区别有哪些?
      • select:
      • poll:
      • epoll:

select、poll、epoll 区别有哪些?

select:

它仅仅知道了,有 I/O 事件发生了,却并不知道是哪那几个流(可能有一个,多个, 甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以 select 具有 O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。

poll:

poll 本质上和 select 没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个
fd 对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的.

epoll:

epoll 可以理解为 event poll,不同于忙轮询和无差别轮询,epoll 会把哪个流发生了怎样的 I/O 事件通知我们。所以我们说 epoll 实际上是事件驱动(每个事件关联上 fd)的, 此时我们对这些流的操作都是有意义的。(复杂度降低到了 O(1)),通过红黑树和双链表数据结构,并结合回调机制,造就了 epoll 的高效,epoll_create(),epoll_ctl()和 epoll_wait() 系统调用。

http://www.lryc.cn/news/261056.html

相关文章:

  • 大模型下开源文档解析工具总结及技术思考
  • 【华为数据之道学习笔记】5-4 数据入湖方式
  • Vue3-03-reactive() 响应式基本使用
  • OpenAI开源超级对齐方法:用GPT-2,监督、微调GPT-4
  • TeeChart.NET 2023.11.17 Crack
  • 计算机网络常见的缩写
  • vue cli 脚手架之配置代理
  • STM32启动流程详解(超全,startup_stm32xx.s分析)
  • 小程序接口OK,桌面调试接口不行
  • 【贪心】LeetCode-406. 根据身高重建队列
  • 【C++11特性篇】C++11中新增的initializer_list——初始化的小利器
  • springboot(ssm宠物美容机构CRM系统 宠物服务商城系统Java系统
  • LSTM 双向 Bi-LSTM
  • 2024测试开发面试题完整版本(附答案)
  • MySQL作为服务端的配置过程与实际案例
  • Appium 自动化自学篇 —— 初识Appium自动化!
  • Linux基本操作指令
  • 探索SD-WAN技术对传统制造业实现智能制造的作用
  • C++基础-this指针详解
  • 如何一键生成多个文件二维码?批量文件二维码制作技巧
  • SQL连续
  • sql server导出与导入
  • DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统)
  • 使用国内镜像源安装opencv
  • 人工智能与大数据的紧密联系
  • macbookpro 2024怎么恢复出厂设置
  • Linux系统编程(二):标准 I/O 库(下)
  • Mr. Cappuccino的第65杯咖啡——MacOS安装Docker
  • 解决 Docker Hub 国内无法访问的方法(Docker 镜像下载加速)
  • (第61天)多租户架构(CDB/PDB)