併發程式設計模型

2021-07-22 08:38:23 字數 1013 閱讀 5645

什麼是併發程式設計模型?

併發程式設計模型是一種如何使用併發來有效、高效處理任務的程式設計方式。也就是說如何使用併發。

  並行工作者模型

  流水線模型

並行工作者模型

並行工作者就是多個任務是並行執行的。用於個執行緒用於管理,當有任務來到時,通過某種策略來將任務分發給某乙個worker執行緒。而真正的worker執行緒執行是並行的。

並行工作者是乙個執行緒完完全全的處理乙個任務,也就是乙個任務完全由乙個執行緒來處理。但是多個執行緒之間的任務是不能保證他們的執行順序的。然而有時候我們是需要多個任務是按照順序來執行的。

另外,並行工作者模型是有多少任務併發執行就有多少執行緒,當隨著任務數量的增加,執行緒數量也會不斷增多。然而,當執行緒數量達到乙個閾值時,效能反而會下降。

流水線模式

與併發工作模型不同的是,流水線模型將是通過乙個任務的工作過程來設計的。也就是說乙個任務不再是由乙個執行緒來處理了,而是由多個執行緒來處理,每個執行緒都有先後順序,不同的執行緒執行任務的不同階段。如worker2執行io、worker3執行計算、worker4列印日誌。

這樣任務數量就和執行緒數量沒有那麼直接的關係了,而是跟任務的過程有關。當有很多的任務需要處理時,執行緒不會隨著任務的數量增加而增加。當某個執行緒執行完乙個任務的某乙個階段後,將任務交給下乙個執行緒處理,而自己又可以接受上乙個執行緒扔過來的任務繼續處理。

為了更高效的處理任務,可以將流水線模型和併發工作者模型進行結合:

將並行工作者模型和流水線模型集合,當有很多的任務需要處理時,為每乙個 」執行緒鏈「 分配一批任務,這樣每個 」執行緒鏈「 的負載就不會過重。

併發模型和並行程式設計模型

併發性考慮的是同時發生的兩個或者兩個以上的活動。2 併發處理有佇列等候 喚醒 執行至少三個這樣的步驟。併發是巨集觀概念,在微觀上它們都是序列被處理的,只不過資源不會在某乙個上面被阻塞,一般都是通過時間進行輪轉,所以在巨集觀上看多個幾乎同時到達的請求同時被處理。同乙個時刻到達的請求也會根據優先順序的不...

Socket程式設計之併發模型

所謂併發模型,就是當伺服器端accept乙個新的連線請求後,便開乙個新執行緒,處理與客戶端的連線。併發模型簡單易用,適用於客戶端的併發連線請求不多的應用中,但併發請求過多便不適用。示例 如下 完整示例 可參看 迴圈接受客戶端連線請求,請求到達到,開新執行緒與客戶端互動 while 1 socketi...

C 併發程式設計 記憶體模型

c 程式中的所有資料都是由物件 objects 構成,乙個物件都會儲存在乙個或多個記憶體位置上。位域 雖然相鄰位域中是不同的物件,但仍視其為相同的記憶體位置 四個原則 記憶體位置和併發關係 當兩個執行緒訪問不同 separate 的記憶體位置時,不會存在任何問題 當兩個執行緒訪問同一 same 個記...