select.poll和epoll的区别 select只是告诉你一定数目的流有事件了,至于哪个流有事件,还得你一个一个地去轮询,而epoll会把发生的事件告诉你,通过发生的事件,就自然而然定位到哪个流了。 1、select实现 select的调用过程如下所示: (1)使用copy_from_user从用户空间拷贝fd_set到内核空间 (2)注册回调函数__pollwait...
select,poll,epoll都是IO多路复用的机制。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。下来,分别谈谈。 select——> 原理概述: select 的核心功能是...
2、poll 同步多路IO复用 调用过程和select类似 时间复杂度:O(n) 其和select不同的地方:采用链表的方式替换原有fd_set数据结构,而使其没有连接数的限制。 3、epoll 同步多路IO复用 时间复杂度:O(1) epoll的工作方式 epoll的两种工作方式:1.水平触发(LT)2.边缘触发(ET) LT模式: 若就绪的事件一次没有处理完...