回覆列表
  • 1 # 使用者9662297337979

    幾種模型的特點

    工作組模型

    1.多個worker共享一個數據佇列,所以每次dequeue時要先檢查佇列是否為空。不為空才能的返回訊息。

    2.enqueue可以不用關心佇列訊息數,只需要enqueue然後通知執行緒即可。

    3.示例中,條件變數condDone是可選的。某些情況下需要知曉佇列是否為空的狀態,可以考慮增加這個條件變數並編寫介面。

    C/S模型

    1.只有一個執行緒處理訊息,然後再把處理後的訊息透過客戶端的訊息佇列同客戶端互動。

    流水線模型

    1.流水線有很多節點,後面的節點阻塞會導致前面的節點阻塞。前面的節點是否阻塞並不影響後面節點的工作。佇列尾部和頭部可以同時讀寫。這跟現實中時一樣的。

    2.流水線為了實現嚴格的執行順序,每個節點的資料結構構成了訊息佇列的一環,並且一定要有訊號量和條件變數來控制執行順序。

    各個程式設計模型的作用

    流水線模型主要用來嚴格控制執行緒的執行順序。工作組模型可以用來提高訊息的處理處理速度。C/S模型主要用來提供多執行緒互動的架構。實際程式設計中,這幾種是一起混著用的。

    各個程式設計模型的區別

    流水線模型裡,每個執行緒乾的活是不一樣的。

    工作組模型裡,所有的執行緒都可以從佇列尾部取出訊息進行處理,所有執行緒的實現邏輯都是一樣的。

    客戶/伺服器模型裡,用於處理訊息的執行緒只有一個。為了提高併發度,可以採用工作組的模式來處理訊息。C/S多執行緒模型的關鍵是,伺服器必須要等到客戶端的命令後才能工作,而且處理完訊息後可能會同客戶端進行互動。所以在實現中,伺服器端和客戶端都要擁有自己獨立的訊息佇列。

    多執行緒程式設計的關鍵在於確定多個執行緒之間的架構,並根據架構構建資料(訊息)線上程之間的流通通道。

  • 中秋節和大豐收的關聯?
  • 有哪些陽光清新的手繪女生的動漫頭像推薦?