epoll 事件丢失

如果主accept监听的soctet
fd也设置为非阻塞,那么单纯靠epoll事件来驱动的 服务器模型会存在问题,并发压力下发现,每次accept只从系统中取得第一个,所以如果恰冯多个
连接同时触发 server
fd的EPOLLIN事件,在返回的event数组中体现不出来,会出现丢失事件的现象,所以当用ab等工具简单的压载就会发现每次都会有最后几条信息得
不到处理,原因就在于此,我现在的解决办法是将server fd的监听去掉,用一个线程阻塞监听,accept成功就处理检测client

fd,然后在主线程循环监听client事件,这样epoll在边缘模式下出错的概率就小,测试表明效果明显


以上为网上的资料

//本人:1可以将fd设置为阻塞,并采用LT模式,就可以了

2.可以在Accept时用循环接受链接



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值