Java NIO分析(4): I/O多路复用之poll系统调用
poll
系统调用主要解决了select
系统调用的2个问题:
- 文件描述符数量(fd_setsize = 32)太小, 而且数值是使用宏写死的,这样在32位机器上最大文件描述符数量只有32*32=1024
- 文件描述符集(fd_set)这种
值-结果参数
的api设计不是很好, select系统调用的时候要分别传读set,写set,更多事件不好细分
poll
系统调用使用了pollfd数据结构来表示事件数组,没有了fd_setsize
的限制,同时支持更多的事件类型