天天看點

多線程程式設計學習(7)read-write lock pattern

Read-Write Lock Pattern【讀寫】

一:Read-Write Lock Pattern的參與者

--->讀寫鎖

--->資料(共享資源)

--->讀線程

--->寫線程

二Read-Write Lock Pattern模式什麼時候使用

--->

 * 為了多線線程環境下保護資料安全,我們必須避免的沖突

 * 一個線程讀取,另一個線程寫入的read-write conflick

 * 一個線程寫入,另一個線程寫入的write-write conflick

 * 一個線程讀取,另一個線程也在讀取不會産生沖突

 *

 * 當線程想要擷取讀取鎖定時:

 * -->已經有線程在執行寫入,則等待。不等待,則發生read-write conflick

 * -->已經有線程在讀取,則不需要等待。不存在read-read conflick

 * 當線程想要擷取寫入鎖定時:

 * -->已經有線程在執行寫入,則等待。不等待,則發生write-write conflick

 * -->已經有線程在執行讀取,則等待。不等待,則發生read-write conflick

--->利用同時(讀取)不會引起資料沖突的特性,提高系統的性能

--->适合讀取操作繁重時

--->适合讀取操作比寫入操作繁重時

三:Read-Write Lock Pattern思考

四進階說明

讀寫鎖

多線程程式設計學習(7)read-write lock pattern
多線程程式設計學習(7)read-write lock pattern

View Code

資料類(公共資源)

多線程程式設計學習(7)read-write lock pattern
多線程程式設計學習(7)read-write lock pattern

讀線程

多線程程式設計學習(7)read-write lock pattern
多線程程式設計學習(7)read-write lock pattern

寫線程

多線程程式設計學習(7)read-write lock pattern
多線程程式設計學習(7)read-write lock pattern

測試類

多線程程式設計學習(7)read-write lock pattern
多線程程式設計學習(7)read-write lock pattern

列印結果

【寫入線程yk】寫入0*yk

【寫入線程shj】寫入0*hj

【寫入線程shl】寫入0*hl

[讀取線程sxf] 讀取資料為:**

[讀取線程sxy] 讀取資料為:**

[讀取線程sxs] 讀取資料為:**

【寫入線程shj】寫入1*hj

[讀取線程sxs] 讀取資料為:0*hj

[讀取線程sxy] 讀取資料為:0*hj

[讀取線程sxf] 讀取資料為:0*hj

【寫入線程shj】寫入2*hj

[讀取線程sxf] 讀取資料為:1*hj

[讀取線程sxy] 讀取資料為:1*hj

[讀取線程sxs] 讀取資料為:1*hj

【寫入線程shl】寫入1*hl

【寫入線程shj】寫入3*hj

【寫入線程shl】寫入2*hl

【寫入線程shj】寫入4*hj

【寫入線程shl】寫入3*hl

【寫入線程shj】寫入5*hj

【寫入線程shl】寫入4*hl

繼續閱讀