網路程式設計學習 設計模式 半同步半非同步模式

2021-06-20 08:05:14 字數 636 閱讀 5845

設計模式大部分都是扯蛋的,真正有用的不多,廣泛應用的更少寥寥無幾,半同步半非同步(half-sync/half-async)正是其中之一

一: 同步和非同步的問題

同步: 編碼簡單,邏輯清晰, 但效率低

非同步: 效率高,但結構複雜,需處理各種時序和競爭問題

對於網路通訊來說非同步可以避免大量的阻塞,提高效率, 因此高效能伺服器基本都是非同步的. 但對於業務處理來說非同步並沒有明顯效能優勢,反而會導致編碼複雜.

於是half-sync/half-async便橫空出世來解決個問題了

二, 非同步層/ 同步層和佇列層

它的應用非常廣泛,別的不說,我們的作業系統本身就是乙個half-sync/half-async模式:

三, 實際程式設計應用

這個模式在實際編碼中也有廣泛應用, 以搜尋引擎中cache和query的通訊為例, 其實就是乙個half-sync/half-async 的例子. 其最顯著的特徵就是:

非同步接收-->放入佇列-->同步處理同步處理-->放入佇列-->非同步傳送

半同步半非同步模式

在io模型中 同步和非同步的區分在於核心向應用程式通知的是和種io事件,同步模式下通知的是就緒事件,非同步通知的是完成事件,以及到底是誰來完成i o讀寫,同步模式下由應用程式來i o讀寫完成,而非同步模式下由核心幫我們完成i o讀寫。在併發模型中 同步指的是程式完全按照 的順序執行 非同步指的是程式...

高效併發模式 半同步 半非同步模式

併發程式設計的目的是讓程式 同時 執行多個任務。若程式是計算密集型的,併發程式設計並沒有優勢,相反由於任務的切換使得效率降低。但如果程式是i o密集型的,比如經常讀寫檔案,訪問資料庫等,則情況不同。由於i o操作的速度遠沒有cpu計算的速度快,所以當程式阻塞於i o操作將浪費大量cpu時間。併發模式...

高效併發模式,半同步半非同步和領導者追隨者

首先來看同步與非同步到底是什麼呢?在計算機領域,同步就是指乙個程序在執行某個請求的時候,若該請求需要一段時間才能返回資訊,那麼這個程序將會一直等待下去,直到收到返回資訊才繼續執行下去 非同步是指程序不需要一直等下去,而是繼續執行下面的操作,不管其他程序的狀態。當有訊息返回時系統會通知程序進行處理,這...