中国推广网

QQ登录

免注册,加入推广网

扫一扫,登录推广网

上一主题 下一主题

服务器如何选择合适的IO模型

[复制链接]
跳转到指定楼层
楼主
小鑫服务器 发表于 2022-8-24 16:23:34
服务器如何选择合适的IO模型

IO模型又分为:

(1).阻塞I/O模型:数据没到达之前,I/O一直阻塞,如果数据到达,则会返回。典型的是recvfrom,一般的默认都是阻塞的。

(2).非阻塞的I/O模型:和阻塞相反,只要不能得到结果的时候,I/O立刻返回。不会阻塞当前线程。

IO复用模型:也就是自己要学习的部分。多路复用的意思是,将多路信号合并到一路上进行处理,类似多个管道汇集到一个管道,与之相反的是多路分解。

IO复用模型主要是select,poll,epoll;对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听;函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数。

信号驱动:首先开启套接口信号驱动I/O功能,并通过系统调用sigaction安装一个信号处理函数。当数据报准备好被读时,就为该进程生成一个SIGIO信号。随即可以在信号处理程序中调用recvfrom来读数据报,井通知主循环数据已准备好被处理中。也可以通知主循环,让它来读数据报。

异步的IO模型:告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核拷贝到用户自己的缓冲区)通知我们。这里并不是说一定要用某个模型,epoll也并不是在所有情况下都比select性能要好的,壹基比小鑫认为在选择的时候还是要结合业务需求来。

分享到:  新浪微博新浪微博 QQ空间QQ空间
中国推广网 - 免责申明1、本主题所有言论和图片纯属会员个人推广行为,并不代表本站赞同其观点和对其真实性负责
2、本站不提供和不存在任何金钱交易,请自行辨别,谨防上当受骗!内容真实性本站不承担任何法律风险
3、本站所有主题由该帖子作者发表,该帖子作者享有帖子相关版权并且依法承担一切因本文发表导致法律责任
4、投诉删除:侵权和违法不良信息举报受理邮箱:admin@iaozi.com (或者点击网站底部联系我们)

中国推广网提供免费推广,免费营销,免费发布广告信息的网络推广平台。
关闭

网站推荐上一条 /1 下一条

扫描二维码
把此页分享给朋友

小黑屋|广告服务|联系我们|推广帮助|(京ICP备16009988号)

中国推广网(推广论坛)是免费网络推广平台||免费推广就上中国推广网

技术支持:推广网官方

中国推广网·免费发广告平台

快速回复 返回顶部 返回列表