muduo网络库

muduo中一些注意点:

1:设置边缘或者水平出发的时候: 如果在listen 的sock 不是单独线程的情况:  边缘出发, 如果漏掉一次accept 程序则再也不会接受到新连接,可读事件也是一样的

               最好的做法应该是 可读设置成水平出发,可写操作设置成边缘触发,现在epoll 还不支持。

2:muduo 的buff 前8个字节预留出来  以用来在后面在网络消息传输中需要在消息头部增加消息长度,这样可以直接增加,减少了一次消息数据的拷贝: 在需要发送的消息都是慢慢增加的字符到消息中 最后才知道最终发送消息的长度。


2:muduo 定时器实现: 1:是用优先队列  2:是用map<timestamp, timer * > 虽然是有序的  但是无法处理两个timer 一起到期的timer  是用pair<timestamp, timer>

      3:时间轮 4:是用 linux 系统的自带timerid_create 加入epoll 中然后到期后的timer变成可读

3: 在网络层的缓冲中  发送缓冲区是用buff  这样可以只调用一次系统调用write()  在自己的write缓冲中使用list 挂接要发送的string,这样少了字符串拷贝 但是多了 write调用


4:如果发送的速度快于 客户端接受的速度,会造成本地缓冲区的的堆积太大,这个需要设置一个高水位处理


5:主动连接的时候 重试时间应该逐渐延长,如0.5s 1s 2s 4s 直到30s 即back-off。


6:进程意外退出 操作系统会关闭进程使用中的tcp_sock 会往对方发送FIN分节(断电之类的是不会了),尽管如此,应用层的心跳是必不可少的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值