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

关于同步,异步,阻塞与非阻塞的一些认识

时间:2014-08-02 13:03:13      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:style   http   使用   io   cti   代码   line   js   

当你们在说同步,异步,阻塞,非阻塞的时候到底在说什么?

一个术语的描述应该有一个目标对象吧

那些说同步,异步的家伙,从来不说这个目标对象是谁,在程序的运行过程中,有很多参与者,到底这个同步,异步用来描述谁的呢?

关于同步与异步的讨论,知乎上有人解释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的执行顺序发生了改变。

我认为使用同步调用,异步调用去描述这种现象更加明确。

元芳,你怎么看?

关于同步,异步,阻塞与非阻塞的一些认识,布布扣,bubuko.com

关于同步,异步,阻塞与非阻塞的一些认识

标签:style   http   使用   io   cti   代码   line   js   

原文地址:http://my.oschina.net/xcchcaptain/blog/297343

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