说明参考
阻塞和非阻塞,同步和异步表面理解:前者是侧重顺序执行的阻断是否,后者是通知方式(用户线程与内核的交互,及数据拷贝内核到用户).请看上面地址的io模型分析==时序图重点理解==(用户内核的区分)
IO模型
==blocking IO==
==nonblocking IO==
==IO multiplexing==
1.select
特点:fd有限1024,每次需轮询所有fd才找到对应fd
2.epoll
特点:fd无限,不需轮询激活的fd在一个队列里
应用场景误区:
在大量io请求且大部分不是空闲的这时select不见得不好,例如IM服务
epoll在大量请求多数是空闲的情况是适合的
==signal driven IO==
==asynchronous IO==
参考
http://blog.csdn.net/historyasamirror/article/details/5778378
io多路复用 select poll epoll
io复用解决了多线程/进程场景下的线程创建,保持和切换的开销问题
select
http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html
==理解select流程图==:代码引用自地址:http://blog.csdn.net/hailong0715/article/details/69486583
epoll 代码例子看下面博客地址
epollout 什么时候会触发