http://www.cnblogs.com/Anker/p/3263780.html
1、基本知识
epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。
记录在Linux开发时候的心得与记录
http://www.cnblogs.com/Anker/p/3263780.html
1、基本知识
epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。
以前一直写结构体时都是用char *data来表达结构体存储可变的数据,这样的做法是非常正常也是常用的形式,前段时间看部分代码时发现一个结构中包含char data[0],第一次见到非常不理解,数组的长度居然可以为0?当时就google了一下,发现很多Linux上的源码中都采用char data[0],想到大神们都采用这种写法,说明这种写法肯定有隐藏着非常观的空间优势或者操作上的方便。为此我决定写个demo来测试一下
http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html
1、基本概念
IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:
http://www.cnblogs.com/Anker/archive/2013/08/15/3261006.html
1、基本知识
poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。