1. 程式人生 > 其它 >多執行緒應用中,執行緒資源應該放在哪些程式碼塊中

多執行緒應用中,執行緒資源應該放在哪些程式碼塊中

如題:在現實的應用中,執行緒資源應該放在哪些程式碼塊中?這個問題可能涉及到多執行緒設計模式。以下內容為隨筆。

request-handle-response應用

  一個request-handle-response模式下的應用, 若所有的程式碼模組都在一個執行緒中,這個唯一的執行緒只能序列地處理request, handle, response三個部分。若是在多執行緒中,一個直覺的執行緒分配方式就是:三個模組每個各給一份執行緒資源,三個模組之間再通過同步器(synchronizer)進行協調。

應用與自動機械系統

  一個應用可以看作是一個自動機械系統,而應用中的執行緒(池)可類比機械系統的動力源,單執行緒應用對應單動力源機械系統,多執行緒對應多動力源機械系統。在生產者-消費者模型中,生產者和消費者各需要一份動力源。

結論

  從整體的角度來看,執行緒資源應該分佈於兩大類和三大塊,即:資料的輸入/輸出以及資料的處理模組中。request-handle-response正好符合這個結論;而在生產者和消費者模式中,生產者和消費者都可看作是處理資料模組。整個應用都是request-handle-response模式下的自相似組合。