epoll nginx 核心详解_彻底搞懂epoll高效运行的原理

本文详细介绍了epoll的I/O事件通知机制,包括epoll的核心API(epoll_create、epoll_ctl、epoll_wait)及其工作原理。讨论了epoll与select、poll的对比,强调了epoll的效率优势,如回调机制、边缘触发模式以及避免数据拷贝的优化。适合对网络编程和Linux内核感兴趣的读者深入理解。
摘要由CSDN通过智能技术生成

前言

这篇文章读不懂的没关系,可以先收藏一下。笔者准备介绍完epoll和NIO等知识点,然后写一篇Java网络IO模型的介绍,这样可以使Java网络IO的知识体系更加地完整和严谨。初学者也可以等看完IO模型介绍的博客之后,再回头看这些博客,会更加有收获。

如果你顺利啃下这篇博客,恭喜你,nginx、redis和NIO等核心思想已经被你掌握了,可以顺势去拓展自己的理解。否则,只是孤立的看epoll,时间一长会很快忘记的。

当然,这些核心思想,笔者也会在之后的博客慢慢做详细讲解,欢迎关注

概念初探

epoll是一种I/O事件通知机制,是linux 内核实现IO多路复用的一个实现。IO多路复用是指,在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。

IO多路复用,以后的博客会有详细讲解。

I/O

输入输出(input/output)的对象可以是文件(file), 网络(socket),进程之间的管道(pipe)。在linux系统中,都用文件描述符(fd)来表示。

事件

  • 可读事件,当文件描述符关联的内核读缓冲区可读,则触发可读事件。(可读:内核缓冲区非空,有数据可以读取)

  • 可写事件,当文件描述符关联的内核写缓冲区可写,则触发可写事件。(可写:内核缓冲区不满,有空闲空间可以写入)

通知机制

通知机制,就是当事件发生的时候,则主动通知。通知机制的反面,就是轮询机制。

epoll的通俗解释

结合以上三条,epoll的通俗解释是一种当文件描述符的内核缓冲区非空的时候,发出可读信号进行通知,当写缓冲区不满的时候,发出可写信号通知的机制

epoll的API详解

epoll的核心是3个API,核心数据结构是:1个红黑树和1个链表

366bfa64079c1f1f544d2a349e397889.png

1. int epoll_create(int size)

功能:

  • 内核会产生一个epoll 实例数据结构并返回一个文件描述符,这个特殊的描述符就是epoll实例的句柄,后面的两个接口都以它为中心(即epfd形参)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值