摘要: 首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO)asynchronous I/O (the POSIX aio_functions)blocking I/O 这个不用多解释吧,阻塞套接字。下图是它调用过程的图示:重点解释下上图,下面例子都会讲到。首先application调用 recvfrom()转入kernel,注意kernel有2个过程,wait for data和copy data from kernel to user 阅读全文
posted @ 2012-05-18 17:50 青茶柠檬 阅读(235) 评论(0) 推荐(0) 编辑
摘要: select 和 epoll最近有朋友在面试的时候被问了select 和epoll效率差的原因,和一般人一样,大部分都会回答select是轮询、epoll是触发式的,所以效率高。这个答案听上去很完美,大致也说出了二者的主要区别。 今天闲来无事,翻看了下内核代码,结合内核代码和大家分享下我的观点。 一、连接数我本人也曾经在项目中用过select和epoll,对于select,感触最深的是linux下select最大数目限制(windows 下似乎没有限制),每个进程的select最多能处理FD_SETSIZE个FD(文件句柄), 如果要处理超过1024个句柄,只能采用多进程了。 常见的使用sle 阅读全文
posted @ 2012-05-18 17:42 青茶柠檬 阅读(376) 评论(0) 推荐(0) 编辑