回覆列表
  • 1 # 湯圓電影Vlog

    幾種模型的特點工作組模型1.多個worker共享一個數據佇列,所以每次dequeue時要先檢查佇列是否為空。不為空才能的返回訊息。2.enqueue可以不用關心佇列訊息數,只需要enqueue然後通知執行緒即可。3.示例中,條件變數condDone是可選的。某些情況下需要知曉佇列是否為空的狀態,可以考慮增加這個條件變數並編寫介面。C/S模型1.只有一個執行緒處理訊息,然後再把處理後的訊息透過客戶端的訊息佇列同客戶端互動。流水線模型1.流水線有很多節點,後面的節點阻塞會導致前面的節點阻塞。前面的節點是否阻塞並不影響後面節點的工作。佇列尾部和頭部可以同時讀寫。這跟現實中時一樣的。2.流水線為了實現嚴格的執行順序,每個節點的資料結構構成了訊息佇列的一環,並且一定要有訊號量和條件變數來控制執行順序。各個程式設計模型的作用流水線模型主要用來嚴格控制執行緒的執行順序。工作組模型可以用來提高訊息的處理處理速度。C/S模型主要用來提供多執行緒互動的架構。實際程式設計中,這幾種是一起混著用的。各個程式設計模型的區別流水線模型裡,每個執行緒乾的活是不一樣的。工作組模型裡,所有的執行緒都可以從佇列尾部取出訊息進行處理,所有執行緒的實現邏輯都是一樣的。客戶/伺服器模型裡,用於處理訊息的執行緒只有一個。為了提高併發度,可以採用工作組的模式來處理訊息。C/S多執行緒模型的關鍵是,伺服器必須要等到客戶端的命令後才能工作,而且處理完訊息後可能會同客戶端進行互動。所以在實現中,伺服器端和客戶端都要擁有自己獨立的訊息佇列。多執行緒程式設計的關鍵在於確定多個執行緒之間的架構,並根據架構構建資料(訊息)線上程之間的流通通道。

  • 中秋節和大豐收的關聯?
  • 為什麼世界離不開美元?