前言
epoll和select的区别:
select | epoll | |
---|---|---|
性能 | 随着连接数增加,急剧下降。处理成千上万并发连接时,性能很差。 | 随着连接数增加,性能基本上没有下降。处理成千上万并发连接时,性能很好 |
连接数 | 连接数有限制,处理的最大连接数不超过1024.如果要处理超过1024个连接数,则需要修改FD_SETSIZE宏,并重新编译。 | 连接数无限制 |
内在处理机制 | 线性轮询 | 回调callback |
开发复杂性 | 低 | 中 |
select单个进程可监视的fd数量受到限制 epoll和select都可以实现同时监听多个I/O事件的状态 epoll基于轮训机制,select基于操作系统支持的I/O通知机制 epoll支持水平触发和边沿触发两种模式
一、select
select本质上是通过设置或检查存放fd标志位的数据结构进行下一步处理。 这带来缺点: - 单个进程可监视的fd数量被限制,即能监听端口的数量有限 单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是3232,同理64位机器上FD_SETSIZE为3264),当然我们可以对进行修改,然后重新编译内核,但是性能可能会受到影响,这需要进一步的测试 一般