poll -- 4




概述epoll 是 linux 内核为处理大批量文件描述符而对 poll 进行的改进版本,是 linux 下多路复用 IO 接口 select/poll 的增强版本,显著提高了程序在大量并发连接中只有少量活跃的情况下的CPU利用率在获取事件时,它无需遍历整个被侦听描述符集,只要遍历被内核 IO 事件异步唤醒而加入 ready 队列的描述符集合就行了epoll 除了提供 select/poll 所提供的 IO 事件的电平触发,还提供了边沿触发,,这样做可以使得用户空间程序有可能缓存 IO 状态,减少 epoll_wait 或 epoll_pwait 的调用,提高程序效率 实现原理当某个进程调用 epoll_create 函数创建 epoll 专用的文件描述符时,Linux 内核会创建一个 eventpoll 结构体变量:struct eventpoll { ... struct rb_root rbr; // 红黑树根节点,存储 epo
#读书笔记    #技术帖    #linux    #unix   
简介poll 与 select 函数类似,但在处理流设备时,poll 可以提供额外的信息函数原型int poll (struct pollfd *fdarray, unsigned long nfds, int timeout); 定义于 poll.h 中若超时返回0,出错返回-1,否则返回就绪描述符数目参数说明fdarray第一个参数是一个结构体数组头指针,数组的每个元素是一个 pollfd 结构:struct pollfd { int fd; short events; short revents; }; 要测试的条件由 events 成员指定,函数调用结束后在 revents 成员中返回描述符状态与 select 的值-结果参数不同,这样做无须每次调用后重新为参数赋值 events、revents 常量events、revents 可选常量常量值events可选revents可选说明输入处理   POLLINYY普通或优先级带数据可读POLLRDNORMYY普通数据可读POLLRDBANDYY优先级带数据可读POLLPRIYY高优先级数据可读输出处理&
#读书笔记    #技术帖    #linux    #unix   

200x200


概述考虑一个简单的客户端程序:从标准输入读取数据(fgets),然后发送给服务器,并接收服务器返回的TCP套接字如果当客户端进程阻塞在从标准输入读取数据期间,服务器进程被杀死,那么服务器进程会给客户端

#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号