网络开发的一些总结

(1) I/O 模型的选择,

epoll就一定好吗?  那是肯定的。

epoll最有用的就是ET模式,适合于那种有大量连接,但是有数据的连接比较少的情况,
如果你有10000个连接,但是很不幸,这10000个连接全部都有数据,你还是得遍历一把进行处理,( 这里对ET模式下怎么处理数据就不讨论了)。

这个和select, poll有什么区别。

epoll还有比select, poll先进得地方, 就在于将fd得列表维护在内核中, 而select, poll是调用一次,传递一次, 这点epoll领先是没得说得。

最主要还是epoll系统调用的实现方式采用事件方式,比poll, select的轮询方式强的多

(2) 使用非堵塞

做为网络服务器, 堵塞I/O一般情况下不予考虑,视服务器模型

(3) 减少I/O操作和无谓的系统调用

比如利用writev一次性写入多个数据, 减少write调用的次数.

或者使用零拷贝的sendfile,tee等

(4) tcp是双工的

这点不要忽略掉, 数据转发程序就在于数据的转发速度, 这里我采用读和写分开线程的处理方式

(5) 进程还是线程

这个无关紧要,一个粒度和数据访问, 稳定性的问题。减少之间的相互影响,尽量没有关联, 比如减少对相关互斥数据的访问等等。

(6) 尽量在设计上做到不需要锁
比如使用环形缓存, 环形消息队列等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值