同步模式(Synchronous)

2021-10-13 23:23:58 字數 848 閱讀 4974

概念:

**中的任務依次排隊執行,執行順序與**的編寫順序是完全一致的。在單執行緒下大多數任務都會以同步模式去執行

執行講解:

例:

console.log('begin')   

function a()

function b()

b()cosnole.log('end')

1、js執行引擎會把整體的**全部載入進來

2、然後在呼叫棧(call stack)當中壓入乙個匿名(anonymous)的呼叫,這個匿名的呼叫可以理解為把全部的**放入到乙個匿名的函式當中去執行,然後去逐行執行

3、呼叫棧中依次壓入上述**去執行,呼叫棧中:

(anonymous) 逐行執行

console.log(『begin』) 執行 彈出

b() 執行

console.log(『b task』) 執行 彈出

a()執行

console.log(『a task』) 執行 彈出

a()彈出

b()彈出

cosnole.log(『end』) 執行 彈出

(anonymous) 彈出

呼叫棧的理解

呼叫棧只是乙個更專業的說法,通俗的解釋是,js在執行引擎中維護了乙個正在執行的工作表,當工作表中的所有任務被清空完後,這一輪的工作就結束了

問題:如果某一任務執行時間過長,後面的任務就要延遲(阻塞),一直等待,這種阻塞對使用者來說,介面就會卡頓或者卡死,這就必須要非同步任務來解決程式中無法避免的耗時操作,例如ajax,node.js中的大檔案讀寫等避免**被卡死

同步優化模式

同步優化模式 鎖模式 多個應用,如應用a,應用b,共享乙個資源,為同步它們對共享資源的訪問,鎖是最常用的方式,如下 應用a 應用b lock share lock share unlock share unlock share 通過鎖,確保任何時候只有乙個應用在訪問共享資源 先到先得,後訪問的應用必...

同步模組模式 非同步模組模式

模組化 將複雜的系統分解成高內聚 低耦合的模組,使系統開發變得可控 可維護 可拓展,提高模組的復用率。模組化開發是分而治之的思想,實現對複雜系統的分解,使系統隨著其功能的增加而變得可控 可拓展 可維護。這就要求我們對模組細化,隨著系統功能的增加模組的數量也隨之增加。模組開發的成本隨之減少,但是模組的...

zookeeper基礎(同步模式與廣播模式)

當集群中的learner完成了初始化狀態同步,那麼整個zk集群就進入到了正常工作模式了。如果集群中的learner 節點收到客戶端的事務請求,那麼這些learner會將請求 給leader伺服器。然後再執行如下過程 leader接收到事務請求後,為事務賦予乙個全域性唯一的64位自增id,即zxid,...