(P18)socket编程(十三)

文章目录


(P18)socket编程(十三)
poll只有第一个限制

cat /proc/sys/fs/file-max
因为(P18)socket编程(十三)
因为当前内存是512M,所以系统可以打开的最大文件描述符的个数为5万。若是1G,则是10万左右,10G就是百万。

select和poll的共同点
效率不高的原因:
(P18)socket编程(十三)

(P18)socket编程(十三)

(P18)socket编程(十三)
创建一个epoll实例,size不是最大并发数,size仅仅代表内部所创建的hash表的大小
epoll_creat1:最新的,而且fd的数量已经由红黑树来控制
将一个fd添加到epoll来管理
等待事件

epoll这块测试代码用c++编写
(P18)socket编程(十三)

客户端
(P18)socket编程(十三)

服务端
总共1024个fd,为什么只有1019个fd?
0 1 2 3(监听fd),4(epollfd的句柄),所以最多连接1019个fd
(P18)socket编程(十三)

第3和第4,epoll比poll和select效率高的原因

(P18)socket编程(十三)

第三
epoll_wait返回的事件就已经指出了哪一个fd发生了可读或者可写的事件,所以不用在应用层遍历fd

第五
填充指的是epoll_ctrl填充的
epoll少了2次的遍历

37:57