非同步與同步

2022-08-16 19:18:18 字數 1082 閱讀 3159

對於同步與非同步,有時候一直對於這個概念有點只能意會但是不知道怎麼表達的意思,好好的總結好好的用語言表達一下,提公升自己的語言表達能力。

所謂非同步就是說幹一些事情,當遇到有某些事情需要等待的時候,我抽空去幹其他的事情,當上述的某些事情準備好了的時候我再來進行處理。

所謂同步就是說幹這些事情,就算某些事情需要等待的時候,也不可以去幹其他的事情,必須等著上述某些事情準備好後一件一件按順序處理。

可以得出非同步的執行效率要比同步的執行效率更高;但是,有些情況我們必須使用同步進行處理:

多執行緒環境中的資料共享問題:

首先,對於執行緒來說,所有執行緒共享記憶體和變數等,因此當多個執行緒需要同時訪問同乙個共享資源時,它們需要以某種順序來進行共享資源的使用以此來保證某一特定時刻只有一條執行緒在訪問該共享資源。顯然對於非同步來說,執行結果是無法進行預計的。這種情況,我們必須對資料進行同步,就是說限制一次只能有乙個執行緒進行資源的訪問,其他執行緒必須等待。

實現同步的方法:

1.臨界區

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

2.互斥

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

3.訊號量

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

4.事件

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

同步與非同步

同步執行模式 所謂同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至 程式結束。如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將 一直等待伺服器將查詢結果返回客戶機端,然後才繼續進行下一步操作。眾所周知,應用程式要從乙個大表中刪除所有的記錄將是非常耗時的,如果應用...

同步與非同步

同步與非同步 所謂同步就是乙個任務的完成需要依賴另外乙個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麼成功都成功,失敗都失敗,兩個任務的狀態可以保持一致。而非同步是不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什麼工作,依賴的任務也立即執行,只要自己完...

同步與非同步

1.所謂同步,可以理解為在執行完乙個函式或方法之後,一直等待系統返回值或訊息,這時程式是出於阻塞的,只有接收到返回的值或訊息後才往下執行其他的命令。非同步,執行完函式或方法後,不必阻塞性地等待返回值或訊息,只需要向系統委託乙個非同步過程,那麼當系統接收到返回值或訊息時,系統會自動觸發委託的非同步過程...