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