简析:我读过最好的Epoll模型讲解_mango_song的博客-CSDN博客_比epoll更好的模型
基于epoll的IO多路复用并发模型:Linux网络编程:基于epoll的IO多路复用并发模型_ka__ka__的博客-CSDN博客
select、poll、epoll详解_select poll epoll_yygr的博客-CSDN博客
简介
套接字:套接字是一种通信机制(通信的两方的一种约定),通常指的是封装了ip和port的结构体,又称插口,是TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字或插口。是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:1、连接使用的协议;2、本地主机的IP地址;3、本地进程的协议端口;4、远地主机的IP地址;5、远地进程的协议端口。
文件描述符:fd,即file descriptor,文件描述符。linux下,所有的操作都是对文件进行操作,而对文件的操作是利用文件描述符来实现的。
IO多路复用:一个线程处理多个链接
同步和异步
描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。
阻塞和非阻塞
描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。
epoll
// 创建一个epoll的fd,向内核申请一个简易的文件系统管理fd
int epoll_create(int size);
// epoll的事件注册,增删改,还有事件模式如水平触发还是边沿触发
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
// epoll_wait在调用时,给定的timeout时间内,当在监控的所有fd中有事件发生时,就返回
int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);