阻塞非阻塞、同步与异步,概念理解
2017-01-07 22:58
309 查看
网络上一个人的视频教程讲NIO,听他讲到阻塞非阻塞、同步与异步的概念的时候,都听晕掉了。。。
从其它网络地方看下别人的解释比这个老师讲的是清楚的
下面是我的理解:
这四个概念是计算机里面的,所以不一定非得用生活中的场景进行类比,反而听的糊涂。
阻塞非阻塞:是对调用者的行为进行的描述,当对一次调用的描述是:当希望的结果没有准备好时,函数不返回,则这次调用对于调用者而言就是阻塞式调用,对调用者的影响是等待,等待希望的结果返回;当对一次调用的描述是:当希望的结果没有准备好时,函数也可以返回,则这次调用对于调用者而言就是非阻塞式调用,对调用者的影响是必须通过某种机制可以正确的收到希望的结果、回调函数或者轮询调用或者其它。。。
同步与异步:这两个概念更多的是对通信过程的描述,相互通信的两方,a和b:当a向b发出第一个信息,在a向b发送第二个消息之前必须收到b对第一个信息的回应,则这次通信是同步;相对应的,当a向b发出第一个信息,并且不必等待b的回应就可以发出第二个信息,则这次通信是异同的。
结合这两段可以得出:阻塞非阻塞是对调用者而言,同步与异步是对整个通信过程而言,阻塞的调用一定是同步的,因为第一次调用之后,必须收到返回结果才能发起第二次调用,非阻塞的调用可以是同步的与可以是异步的,因为它可以在没有收到第一次调用希望的结果之前发起第二次调用,同步的通信不能决定调用方是阻塞还是非阻塞,因为非阻塞的调用方式也能完成同步的通信模式,异步的通信方式一定不能使用阻塞的发送者,因为当其发完第一个信息,没有收到回复之前无法发送第二个信息。
从其它网络地方看下别人的解释比这个老师讲的是清楚的
下面是我的理解:
这四个概念是计算机里面的,所以不一定非得用生活中的场景进行类比,反而听的糊涂。
阻塞非阻塞:是对调用者的行为进行的描述,当对一次调用的描述是:当希望的结果没有准备好时,函数不返回,则这次调用对于调用者而言就是阻塞式调用,对调用者的影响是等待,等待希望的结果返回;当对一次调用的描述是:当希望的结果没有准备好时,函数也可以返回,则这次调用对于调用者而言就是非阻塞式调用,对调用者的影响是必须通过某种机制可以正确的收到希望的结果、回调函数或者轮询调用或者其它。。。
同步与异步:这两个概念更多的是对通信过程的描述,相互通信的两方,a和b:当a向b发出第一个信息,在a向b发送第二个消息之前必须收到b对第一个信息的回应,则这次通信是同步;相对应的,当a向b发出第一个信息,并且不必等待b的回应就可以发出第二个信息,则这次通信是异同的。
结合这两段可以得出:阻塞非阻塞是对调用者而言,同步与异步是对整个通信过程而言,阻塞的调用一定是同步的,因为第一次调用之后,必须收到返回结果才能发起第二次调用,非阻塞的调用可以是同步的与可以是异步的,因为它可以在没有收到第一次调用希望的结果之前发起第二次调用,同步的通信不能决定调用方是阻塞还是非阻塞,因为非阻塞的调用方式也能完成同步的通信模式,异步的通信方式一定不能使用阻塞的发送者,因为当其发完第一个信息,没有收到回复之前无法发送第二个信息。
相关文章推荐
- 回调函数、同步、异步、阻塞、非阻塞、D-BUS等概念的理解
- 理解 I/O-- 阻塞、非阻塞,同步、异步的概念及其区别
- 同步、异步与阻塞、非阻塞概念理解与区别
- PHP-Socket阻塞与非阻塞,同步与异步概念的理解
- 概念理解之同步,异步,阻塞,非阻塞
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- 理解 I/O-- 阻塞、非阻塞,同步、异步的概念及其区别
- 同步,异步,阻塞,非阻塞概念理解
- 网络编程中的阻塞与非阻塞,同步与异步概念的理解
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- 回调函数、同步、异步、阻塞、非阻塞、D-BUS等概念的理解
- 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- [转]同步、异步、阻塞和非阻塞的概念
- [转] 同步、异步、阻塞和非阻塞的概念
- 同步、异步、阻塞和非阻塞的概念
- java IO 概念误区---------同步/异步与阻塞/非阻塞的区别
- 同步、异步、阻塞和非阻塞的概念
- 同步/异步、阻塞/非阻塞的理解