本节关键字:Linux C语言 IO复用
相关C库函数:select(FD_SET,FD_ISSET)、epoll
epoll是Linux特有的。select是POSIX规定,一般操作系统均有实现。
名称 | 支持进程打开最大连接数 | IO效率 | 消息传递方式 |
---|---|---|---|
select | 32位机器1024个,64位机器2048个 | IO效率低 | 内核需要将消息传递到用户空间,都需要内核拷贝动作 |
poll | 无限制,因为是基于链表存储 | IO效率低 | 内核需要将消息传递到用户空间,都需要内核拷贝动作 |
epoll | 有上限,2G内容20w左右 | 只有活跃的socket才调用callback,IO效率高 | 通过内核与用户空间共享一块内存来实现 |