window异步IO复杂,linux也很容易出错

作者分享了在并发编程中使用IOCP和epoll的体验,发现epoll在长时间运行时容易出现丢包现象,影响客户端接收。分析了高效epoll的潜在bug以及异步发送过程中的数据提交问题,并提出了一种减少内核负担的解决方案。此外,文章还探讨了C和C++设计框架的差异,并强调了开源框架的利用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

去年搞了1个月的IOCP发现,异常难控制。

今年把自己的同时写的epoll拿出来使用,发现总是发一段时间后,很容易丢包。照成客户机卡住等待recv。但是本地测试却没有问题。

 

我也怀疑高效的epoll EL(Edge Triggered)是有bug的,最后发现不知道是不是bug,如果接收未接收干净,确实会影响发送。  虽说是异步发送,但确实数据已经提交出去,已经写入内核缓冲区。 这里的发送我并没有直接提交到队列,有EPOLLOUT发送,而是直接send,虽然很少这样用,但是我觉得很多时候不必要用通知的方式,增加内核负担。

 

C和C++设计框架,模式很多不一样。但是我觉得这么多开源框架没有必要自己写了。至少短期内很少能写出个稳定的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值