关于同步,异步,阻塞与非阻塞的一些认识
2014-08-02 10:39
399 查看
当你们在说同步,异步,阻塞,非阻塞的时候到底在说什么?
一个术语的描述应该有一个目标对象吧
那些说同步,异步的家伙,从来不说这个目标对象是谁,在程序的运行过程中,有很多参与者,到底这个同步,异步用来描述谁的呢?
关于同步与异步的讨论,知乎上有人解释http://www.zhihu.com/question/19732473
个人理解,同步与异步描述的是一种行为方式,阻塞与非阻塞描述的是一种状态。
在js中,我们说同步,是说同步调用,举个栗子:
function A(){
B();
C();
}
那么A对B,C发起了同步调用,这里的主体是A。在执行A的时候,先执行B,在执行C,他们遵循严格的先后顺序。其实就是一个顺序执行。这是同步的具体特征。
而我们说异步,其实是说异步调用方式,表现出的具体特征是改变代码的执行顺序,在js中其实就是延迟执行。
例如:
function A(){
setTimeout( B(),200);
C();
}
这里让B延迟执行,A运行时,会先执行C(),再执行B(),这就是A对B的异步调用。;但是setTimeout(B(),200)这个语句和C的执行,仍然保持严格的先后顺序,只是C和B的执行顺序发生了改变。
我认为使用同步调用,异步调用去描述这种现象更加明确。
元芳,你怎么看?
一个术语的描述应该有一个目标对象吧
那些说同步,异步的家伙,从来不说这个目标对象是谁,在程序的运行过程中,有很多参与者,到底这个同步,异步用来描述谁的呢?
关于同步与异步的讨论,知乎上有人解释http://www.zhihu.com/question/19732473
个人理解,同步与异步描述的是一种行为方式,阻塞与非阻塞描述的是一种状态。
在js中,我们说同步,是说同步调用,举个栗子:
function A(){
B();
C();
}
那么A对B,C发起了同步调用,这里的主体是A。在执行A的时候,先执行B,在执行C,他们遵循严格的先后顺序。其实就是一个顺序执行。这是同步的具体特征。
而我们说异步,其实是说异步调用方式,表现出的具体特征是改变代码的执行顺序,在js中其实就是延迟执行。
例如:
function A(){
setTimeout( B(),200);
C();
}
这里让B延迟执行,A运行时,会先执行C(),再执行B(),这就是A对B的异步调用。;但是setTimeout(B(),200)这个语句和C的执行,仍然保持严格的先后顺序,只是C和B的执行顺序发生了改变。
我认为使用同步调用,异步调用去描述这种现象更加明确。
元芳,你怎么看?
相关文章推荐
- 关于同步(Sync),异步(Async),阻塞(Block),非阻塞等网络通信的一些解释
- 关于同步异步、阻塞非阻塞的一些回答(简明扼要,准确精辟)
- JAVA基础知识之网络编程——-关于阻塞IO/非阻塞IO/同步IO/异步IO的一些参考文章
- 一些关于队列,同步,异步的概念
- 关于socket中阻塞,非阻塞,同步,异步的概念
- 关于IO的同步,异步,阻塞,非阻塞
- 关于IO的同步、异步、阻塞、非阻塞
- 关于同步,异步,阻塞,非阻塞的理解
- 关于IO操作的阻塞,非阻塞,异步,同步的简明解释
- 关于同步、异步,阻塞、非阻塞的解释
- 关于IO的同步,异步,阻塞,非阻塞
- 关于异步,同步,阻塞与非阻塞
- 关于IO的同步,异步,阻塞,非阻塞
- 关于阻塞、非阻塞、异步、同步
- 关于同步/异步,阻塞/非阻塞的一个经典解释
- 关于:socket阻塞、非阻塞,同步、异步、I/O模型
- 关于 同步,异步,阻塞,非阻塞 的理解
- 关于IO的同步,异步,阻塞,非阻塞
- 关于C10K、异步回调、协程、同步阻塞
- 关于同步与异步和阻塞与非阻塞的解释