网络的几种模型概图

21 篇文章 0 订阅
21 篇文章 0 订阅

网络模型一共有这么几种, loop , fork, select, poll, epoll ..

我个人理解它们间的关系与演变过程的原因由下图所示,




以前看到的一段说的不错,补充一下:

一次IO操作都是2次系统调用,Select是先查询再发起IO请求,IOCP是先发起IO请求再接收通知。
但是Select方式在处理大量非活动连接时是比较低效的,因为每次Select需要对所有的Socket状态进行查询,
而对非活动的Socket查询是没有意义的浪费,另外由于Socket句柄不能设置用户私有数据,
当查询返回Socket句柄时还需要一个额外的查询来找到关联的用户对象,这两点是Select低效的关键。
在搞明白低效的原因之后只要接口稍作改进就可以对此进行优化,
Linux下的epoll模型就是对此的一种改进,epoll的改进在于:
1. 不再对Socket状态做查询,而是对Socket事件做查询,避免了无用的Socket状态检查
2. 在事件对象里可以设置用户私有数据,避免了从Socket句柄到用户对象的查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值