多線程設計模式


原創轉載請注明出處:https://www.cnblogs.com/agilestyle/p/11494963.html

 

Single Threaded Execution —— 能通過這座橋的只有一個人

所謂“Single Threaded Execution”,即“以一個線程執行”,該模式用於設置限制,以確保同一時間內只讓一個線程執行處理。

 

Immutable —— 想破壞也破壞不了

Immutable模式中存在着確保實例狀態不發生改變的類(immutable類)。在訪問這些實例時並不需要執行耗時的互斥處理,因此若能巧妙利用該模式,定能提高程序性能。

 

Guarded Suspension —— 等我准備好

如果執行現在的處理會造成問題,就讓執行處理的線程等待,通過讓線程等待來保證實例的安全性。

 

Balking —— 不需要就算了

如果現在不合適執行這個操作,或者沒必要執行這個操作,就停止處理,直接返回。

 

Producer-Consumer —— 我來做,你來用

Producer:生成數據的線程

Consumer:使用數據的線程

Producer-Consumer模式在生產者和消費者之間加入了一個“橋梁角色”,該橋梁用於消除線程間處理速度的差異。

 

Read-Write Lock —— 大家一起讀沒問題,但讀的時候不要寫

當線程讀取實例的狀態時,實例的狀態不會變化。實例的狀態僅在線程執行寫入操作時才會發生變化。

 

Thread-Per-Message —— 這項工作就交給你了

為每個命令或請求新分配一個線程,由這個線程來執行處理。

 

Worker Thread —— 工作沒來就一直等,工作來來就干活

在Worker Thread模式中,工人線程(work thread)會逐個取回工作並進行處理。當所有工作全部完成后,工人線程會等待新的工作到來。

 

Future —— 先給你提貨單

Future的意思是未來、期貨。假設有一個方法需要花費很長時間才能獲取運行結果,那么,與其一直等待結果,不如先拿一張“提貨單”。這里的“提貨單”就稱為Future角色,是“未來”可以轉化為實物的憑證。

 

Two-Phase Termination —— 先收拾房間再睡覺

開始 -> 操作中 -> 終止處理中 -> 終止

先從“操作中”狀態變為“終止處理中”的狀態,然后再真正地終止線程。

 

Thread-Specific Storage —— 一個線程一個儲物櫃

即使只有一個入口,也會在內部為每個線程分配特有的存儲空間的模式。

 

Active Object —— 接收異步消息的主動對象

在Active Object模式中出場的主動對象可不僅僅“有自己特有的線程”。它同時還具有可以從外部接收和處理異步消息並根據需要返回處理結果的特征。

Active Object模式中的主動對象會通過自己特有的線程在合適的時機處理從外部接收到的異步消息。

Active Object模式綜合來Producer-Consumer模式、Thread-Per Message模式、Future模式等各種模式,有時也被稱為Actor模式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM