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

Linux 的 epoll 与 Windows 的 IOCP 详解

如果你在搞网络编程或者高性能服务器,一定要搞懂这两个模型——它们都是用来解决“多路复用”问题的工具,让你同时处理大量的网络连接变得高效又可控。

一、什么是“多路复用”?

简单说,就是你手里有很多任务(比如很多客户端的请求),但系统的核心(线程或者进程)资源有限,你怎么快速、同时处理这些请求?这个问题就属于“多路复用”范畴。

就像你在吃饭,有很多盘菜(请求)摆在桌子上,你想用一只筷子(单个线程)快速夹起来吃掉,并且处理所有盘子里的菜。

如果每个请求都用单独的线程跑,效率低,资源浪费严重。而“多路复用”技术,就是让一只或者少数几只“筷子”可以轮流“夹”住多个“盘子”,高效处理。


二、epoll(Linux)和IOCP(Windows)做了什么?

1. epoll(Linux)

1. 核心功能
epoll 是 Linux 下高效的 I/O 多路复用模型,用于监控多个文件描述符(如 Socket)的 I/O 事件(如可读、可写、异常)。
适用场景:高并发连接(如 Web 服务器、即时通讯服务),单线程/单进程管理大量 Socket。

2. 工作原理

  • 三种模式

    • 水平触发(LT):只要文件描述符就绪(有数据可读/可写),就会持续通知应用。

    • 边缘触发(ET):仅在状态变化时通知一次(如从不可读变为可读),需一次处理完所有数据。

    • 一次性触发(EPOLLONESHOT):事件被处理后需重新注册才能继续监听。

  • 核心 API

    c

    复制

    下载

    int epoll_create(int size);                   // 创建 epoll 实例
    int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);  // 注册/修改监听事件
    int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);  // 等待事件

3. 优势与局限

  • 优点

    • 高效管理数十万并发连接(时间复杂度 O(1)

http://www.xdnf.cn/news/270217.html

相关文章:

  • Mybatis学习(上)
  • 04 基于 STM32 的时钟展示程序
  • 《算法导论(第4版)》阅读笔记:p4-p5
  • HTML与CSS实现风车旋转图形的代码技术详解
  • Webug4.0靶场通关笔记10- 第14关链接注入
  • 深度学习助力校园学生自杀预防
  • wsl2 中使用串口
  • 【信息系统项目管理师】【论文】项目背景示例
  • 66. Java 嵌套类
  • 二叉树最近公共祖先(后序遍历,回溯算法)
  • 强化学习--4.策略梯度方法(蒙特卡罗)
  • 数字信号处理学习笔记--Chapter 0 数字信号处理概述
  • Python 部分内置函数及其用法详解
  • HTML打印设置成白色,但是打印出来的是灰色的解决方案
  • mcp+llm+rag
  • 隐藏元素的多种方式
  • TFT(薄膜晶体管)和LCD(液晶显示器)区别
  • zabbix 重置登录密码
  • 【文献阅读】全球干旱地区植被突变的普遍性和驱动因素
  • 陶瓷陶器缺陷检测VOC+YOLO格式938张2类别
  • 时间交织(TIADC)的失配误差校正处理(以4片1GSPS采样率的12bitADC交织为例讲解)
  • 64常用控件_多元素控件介绍
  • Linux中进程的属性:进程优先级
  • MySQL 分库分表
  • C++ 中 virtual 的作用
  • 基于 vue-flow 实现可视化流程图
  • 第7章 【Python数据类型大爆炸】Python 基础语法和数据类型特性的实例
  • “c++11“,右值,右值引用,可变参数模板...
  • GPU集群监控系统开发实录:基于Prometheus+Grafana的算力利用率可视化方案
  • 第15章 对API的身份验证和授权