IO中同步与异步、阻塞与非阻塞的超级通俗版解释
2013-02-04 11:08
337 查看
虽说是通俗版解释,但是在本文的开头,还是有必要先做一个极简化的介绍。
IO其实有好多种,在此仅以网络IO(相对清晰一点)来说。
我们列举这四种IO:
同步(synchronous) IO & 异步(asynchronous) IO,阻塞(blocking) IO & 非阻塞(non-blocking)
先谈阻塞and非阻塞:
阻塞就是网络数据没有ready的话,一直hold住当前的process,直到数据ready,从kernel拷贝数据到用户内存,然后放行process。
非阻塞是网络数据没有ready的话,就返回一个信号(比如btError)。等到有数据了,再根据网络模型的不同,采取相应的处理方式。
同步就是网络数据如果ready的话,会等待数据从kernel拷贝到用户内存的这个行为完成。
异步就是网络数据即使ready的话,也是直接返回一个信号(比如nReady)。
如果不求严谨的话,大可以把阻塞非阻塞视为网络IO底层的socket的自身行为,把同步异步视为操作socket的处理方式。
通俗而言:
阻塞就是倔强的,不管老子准备好没有,你都得TM等老子。
非阻塞就是理智的,如果我没有准备好的话,您就别等我了,等我准备好了再说吧。
同步就是体贴的顾及他人感受的,如果您好了的话,我就会等您把东西给我,如果您没好的话,那我就可能先走了,不过这取决于您是阻塞还是非阻塞。
异步就是无视他人反馈的,老子不管你是啥情况(阻塞或者非阻塞),老子都不关心,反正老子就告诉你一下要取数据,告诉完就没老子啥事了。
本文是为帮助那些急需要知道这四种IO区别的人理解而写的,知识有限,文中难免有错误之处,望各位大侠指出。
若要真正去理解IO,还是请认真查阅各种权威资料,毕竟学知识是没什么捷径的。
IO其实有好多种,在此仅以网络IO(相对清晰一点)来说。
我们列举这四种IO:
同步(synchronous) IO & 异步(asynchronous) IO,阻塞(blocking) IO & 非阻塞(non-blocking)
先谈阻塞and非阻塞:
阻塞就是网络数据没有ready的话,一直hold住当前的process,直到数据ready,从kernel拷贝数据到用户内存,然后放行process。
非阻塞是网络数据没有ready的话,就返回一个信号(比如btError)。等到有数据了,再根据网络模型的不同,采取相应的处理方式。
同步就是网络数据如果ready的话,会等待数据从kernel拷贝到用户内存的这个行为完成。
异步就是网络数据即使ready的话,也是直接返回一个信号(比如nReady)。
如果不求严谨的话,大可以把阻塞非阻塞视为网络IO底层的socket的自身行为,把同步异步视为操作socket的处理方式。
通俗而言:
阻塞就是倔强的,不管老子准备好没有,你都得TM等老子。
非阻塞就是理智的,如果我没有准备好的话,您就别等我了,等我准备好了再说吧。
同步就是体贴的顾及他人感受的,如果您好了的话,我就会等您把东西给我,如果您没好的话,那我就可能先走了,不过这取决于您是阻塞还是非阻塞。
异步就是无视他人反馈的,老子不管你是啥情况(阻塞或者非阻塞),老子都不关心,反正老子就告诉你一下要取数据,告诉完就没老子啥事了。
本文是为帮助那些急需要知道这四种IO区别的人理解而写的,知识有限,文中难免有错误之处,望各位大侠指出。
若要真正去理解IO,还是请认真查阅各种权威资料,毕竟学知识是没什么捷径的。
相关文章推荐
- 关于IO操作的阻塞,非阻塞,异步,同步的简明解释
- IO - 同步异步,阻塞非阻塞 详细解释
- IO中同步异步,阻塞与非阻塞 -- 通俗篇
- IO-同步,异步,阻塞,非阻塞
- 并发编程基础概念(一) IO-同步,异步,阻塞,非阻塞(转)
- Netty之BIO(同步阻塞IO)、PIO(伪异步阻塞IO)、NIO(异步非阻塞IO)、AIO(异步非阻塞IO)
- 网络IO之阻塞、非阻塞、同步、异步总结
- io-同步 异步 阻塞 非阻塞
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- 关于同步与异步和阻塞与非阻塞的解释
- IO - 同步,异步,阻塞,非阻塞
- 知乎上对理解阻塞非阻塞与同步异步的有趣解释
- IO复用模型同步,异步,阻塞,非阻塞及实例详解
- 关于IO的同步,异步,阻塞,非阻塞
- IO中同步、异步与阻塞、非阻塞的区别 2013-05-31 11:51:19
- IO - 同步,异步,阻塞,非阻塞
- IO中同步、异步与阻塞、非阻塞的区别 分类: 嵌入式开发学习 2014-04-11 13:47 193人阅读 评论(0) 收藏
- IO之同步、异步、阻塞、非阻塞 (2)
- IO操作概念。同步、异步、阻塞、非阻塞