關於同步,異步,阻塞與非阻塞的一些認識

當大家在說同步,異步,阻塞,非阻塞的時候到底在說什麼?異步

一個術語的描述應該有一個目標對象吧spa

那些說同步,異步的傢伙,歷來不說這個目標對象是誰,在程序的運行過程當中,有不少參與者,到底這個同步,異步用來描述誰的呢?對象

關於同步與異步的討論,知乎上有人解釋http://www.zhihu.com/question/19732473 get

我的理解,同步與異步描述的是一種行爲方式,阻塞與非阻塞描述的是一種狀態。同步

在js中,咱們說同步,是說同步調用,舉個栗子:io

function A(){function

        B();
程序

        C();
im

}co

那麼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的執行順序發生了改變。

我認爲使用同步調用,異步調用去描述這種現象更加明確。

元芳,你怎麼看?