異步|同步:區別在於發出一個功能調用時,是否立刻獲得返回結果
阻塞|非阻塞:區別在於調用結果返回以前,當前線程是否掛起 html
node.js:單線程、異步非阻塞模型 node
單線程與異步不矛盾,與併發是矛盾的 多線程
http://blog.chinaunix.net/uid-26000296-id-3754118.html併發
--------------------------------------------------------------------------------------------------------------------異步
http://www.javashuo.com/article/p-fgydeslj-cu.htmlpost
同步和異步一般用來形容一次方法調用。同步方法調用一開始,調用者必須等待被調用的方法結束後,調用者後面的代碼才能執行。而異步調用,指的是,調用者不用管被調用方法是否完成,都會繼續執行後面的代碼,當被調用的方法完成後會通知調用者。好比,在超時購物,若是一件物品沒了,你得等倉庫人員跟你調貨,直到倉庫人員跟你把貨物送過來,你才能繼續去收銀臺付款,這就相似同步調用。而異步調用了,就像網購,你在網上付款下單後,什麼事就不用管了,該幹嗎就幹嗎去了,當貨物到達後你收到通知去取就好。ui
併發和並行是十分容易混淆的概念。併發指的是多個任務交替進行,而並行則是指真正意義上的「同時進行」。實際上,若是系統內只有一個CPU,而使用多線程時,那麼真實系統環境下不能並行,只能經過切換時間片的方式交替進行,而成爲併發執行任務。真正的並行也只能出如今擁有多個CPU的系統中。.net
阻塞和非阻塞一般用來形容多線程間的相互影響,好比一個線程佔有了臨界區資源,那麼其餘線程須要這個資源就必須進行等待該資源的釋放,會致使等待的線程掛起,這種狀況就是阻塞,而非阻塞就剛好相反,它強調沒有一個線程能夠阻塞其餘線程,全部的線程都會嘗試地往前運行。線程
臨界區用來表示一種公共資源或者說是共享數據,能夠被多個線程使用。可是每一個線程使用時,一旦臨界區資源被一個線程佔有,那麼其餘線程必須等待。unix