IO 多路复用

IO多路复用之select总结:http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html

IO多路复用之poll总结: http://www.cnblogs.com/Anker/p/3261006.html

IO多路复用之epoll总结:http://www.cnblogs.com/Anker/p/3263780.html

select、poll、epoll之间的区别总结[整理]:http://www.cnblogs.com/Anker/p/3265058.html

网络IO之阻塞、非阻塞、同步、异步总结:http://www.cnblogs.com/Anker/p/3254269.html


笔记:

select:每次调用select向系统传人多个文件描述符,来等待多个描述符的事件。系统每隔一段时间扫描整个设备列表来看是否有某个监听事件发生,每当有一个事件发生的时候,通知应用程序返回,并将有事件的描述符置位。

poll:跟select类似,但是新加了一个结构体来保存需要监听的描述符和事件

epoll:设置好要监听的描述符和事件后,系统拷贝一个设置到内核,每次调用epoll无需再传入描述符,当事件发生的时候,发生事件的设备放入就绪列表,这样每次系统只需隔段时间查看就绪列表,无需扫描整个描述符列表,性能较前两个系统调用高很多。ET模式,每次调用epoll_wait返回后可以不立即处理就绪的事件,下次调用还在,这是默认模式,ET模式,每次epoll_wait返回后,会重置事件。


网络IO

阻塞:一个调用阻塞至调用完成,比如读,则阻塞至网络上有数据读,且都完成。

非阻塞:调用能立即返回,比如读,若没有可读数据,则返回一个错误码。

同步:IO调用开始,到IO调用完成是阻塞的

异步:IO调用开始只是发一个命令,IO操作由系统完成,完成后通知应用程序

你可能感兴趣的:(面试准备)