同步和非同步有何異同,什麼場景使用

2021-08-28 03:17:17 字數 1163 閱讀 2028

個人分類: 基礎知識

同步:傳送乙個請求,等待返回,然後再傳送下乙個請求 

非同步:傳送乙個請求,不等待返回,隨時可以再傳送下乙個請求

同步可以避免出現死鎖,讀髒資料的發生,一般共享某一資源的時候用,如果每個人都有修改許可權,同時修改乙個檔案,有可能使乙個人讀取另乙個人已經刪除的內容,就會出錯,同步就會按順序來修改。

非同步則是可以提高效率了,現在cpu都是雙核,四核,非同步處理的話可以同時做多項工作,當然必須保證是可以併發處理的。

同步和非同步最大的區別就在於。乙個需要等待,乙個不需要等待。 

比如發簡訊,就是乙個非同步例子。發起者不關心接收者的狀態。不需要等待接收者的返回資訊,則可以進行下一次傳送。 

**,就是乙個同步例子。發起者需要等待接收者,接通**後,通訊才開始。需要等待接收者的返回資訊

而我們平時經常討論的同步問題多發生在多執行緒環境中的資料共享問題。即當多個執行緒需要訪問同乙個資源時,它們需要以某種順序來確保該資源在某一特定時刻只能被乙個執行緒所訪問,如果使用非同步,程式的執行結果將不可預料。因此,在這種情況下,就必須對資料進行同步,即限制只能有乙個程序訪問資源,其他執行緒必須等待。

實現同步的機制主要有臨界區、互斥、訊號量和事件 

臨界區:通過對多執行緒的序列化來訪問公共資源或一段**,速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源進行訪問,如果有多個執行緒試圖訪問公共資 源,那麼在有乙個執行緒進入後,其他試圖訪問公共資源的執行緒將被掛起,並一直等到進入臨界區的執行緒離開,臨界區在被釋放後,其他執行緒才可以搶占。 

互斥量:採用互斥物件機制。 只有擁有互斥物件的執行緒才有訪問公共資源的許可權,因為互斥物件只有乙個,所以能保證公共資源不會同時被多個執行緒訪問。互斥不僅能實現同一應用程式的公共資源安全共享,還能實現不同應用程式的公共資源安全共享 .互斥量比臨界區複雜。因為使用互斥不僅僅能夠在同一應用程式不同執行緒中實現資源的安全共享,而且可以在不同應用程式的執行緒之間實現對資源的安全共享。 

訊號量:它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目 。訊號量物件對執行緒的同步方式與前面幾種方法不同,訊號允許多個執行緒同時使用共享資源,這與作業系統中的pv操作相同。它指出了同時訪問共享資源的執行緒最大數目。它允許多個執行緒在同一時刻訪問同一資源,但是需要限制在同一時刻訪問此資源的最大執行緒數目。 

事件:通過通知操作的方式來保持執行緒的同步,還可以方便實現對多個執行緒的優先順序比較的操作 。

v show和v if有何異同?

v show 用於根據條件展示元素 帶有v show指令的元素始終會被渲染並保留在 dom 中。v show只是簡單地切換元素的 css propertydisplay。注意,v show不支援元素,也不支援v else。2.v if v if是 真正 的條件渲染,因為它會確保在切換過程中條件塊內的...

多執行緒同步和互斥有什麼異同?

執行緒同步是指執行緒之間所具有的一種制約關係,乙個執行緒的執行依賴另乙個執行緒的訊息,當它沒有得到另乙個執行緒的訊息時應等待,直到訊息到達時才被喚醒。執行緒互斥是指對於共享的程序系統資源,在各單個執行緒訪問時的排它性。當有若干個執行緒都要使用某一共享資源時,任何時刻最多隻允許乙個執行緒去使用,其它要...

img標籤的alt和title有何異同

img標籤其中的兩個屬性alt和title有相似的地方,但是在不同的情況下要使用不同的屬性的。alt屬性和title屬性相同點 它們都會出現浮層,顯示自己設定的相關的內容。alt屬性和title屬性不同點 alt屬性 1.當載入不出來的時候,就會在未顯示的地方出現一段alt設定的屬性內容。這個屬性的...