码迷,mamicode.com
首页 > 其他好文 > 详细

五种网络IO模型-阻塞I/O、非阻塞I/O、I/O多路复用、信号驱动I/O、异步I/O

时间:2017-06-26 19:56:45      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:mic   www   短信   完成   一件事   img   程序   非阻塞i/o   net   

1.阻塞I/O模型

我去面馆吃面,点了碗面条,我也不知道做面条需要多久,也不敢出去,只能在那里坐着等。等值师傅做完面,我吃完面条后,再去逛街。这里的吃面就是I/O操作。

 技术分享

 

2.非阻塞I/O模型

我不甘心在这里等着无聊,我想这段时间继续逛商场,但是又怕面条做好了,所以,我逛一会就回来吧台看一眼!为了吃碗面,来来回回跑,差点没跑断腿!

 技术分享

 

3.I/O多路复用

我同时在不同的地方点了菜,要跑来跑去的轮询几十遍,累死了。后来,善良的管理员安装了电子屏幕:上面写着每个菜的状态,我需要去看屏幕,就知道数据准备好了没有。著名的select、poll、epoll的差别就在这里。

 技术分享

 

4.信号驱动

管理员装了个短信系统,面做好了就发短信给我,但是由于成本原因,这个短信只发一次,而且在峰值的时候短信队列会有延时!

 技术分享

 

5.异步I/O

面馆的老板有个外面送餐员,面做好了,就派他直接送货上门。

技术分享

同步与异步

  实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待或者轮询的去查看IO操作是否完成。异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。同步与异步如下图所示:

技术分享

阻塞与非阻塞

  简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞。详细区别如下图所示:

技术分享

 

 参考:http://www.open-open.com/doc/view/cbb2c3363c3b49ceb5812220a9c42e42

           http://blog.csdn.net/historyasamirror/article/details/5778378

      http://www.cnblogs.com/Anker/p/3254269.html

      http://www.cnblogs.com/nufangrensheng/p/3588690.html

信号驱动与异步驱动的区别:http://www.cnblogs.com/kamicoder/p/6476723.html

五种网络IO模型-阻塞I/O、非阻塞I/O、I/O多路复用、信号驱动I/O、异步I/O

标签:mic   www   短信   完成   一件事   img   程序   非阻塞i/o   net   

原文地址:http://www.cnblogs.com/hpcpp/p/7081905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!