讀寫鎖應用的場合
我們有時會遇到對同一個記憶體區域如數組或者連結清單進行多線程讀寫的情況,一般來說有以下幾種處理方式: 1.不加任何限制,多見于讀取寫入都很快的情況,但有時也會出現問題. 2.對讀寫函數都加以同步互斥,這下問題是沒了,但效率也下去了,比如說兩個讀取線程不是非要排隊進入不可. 3.使用讀寫鎖,安全和效率都得到了解決,特别合适讀線程多于寫線程的情況.也就是下面将要展現的模式.
讀寫鎖的意圖
讀寫鎖的本意是分别對讀寫狀态進行互斥區分,有互斥時才加鎖,否則放行.互斥的情況有: 1.讀寫互斥. 2.寫寫互斥. 不互斥的情況是:讀讀,這種情況不該加以限制. 程式就是要讓鎖對象知道目前讀寫狀态,再根據情況對讀寫的線程進行鎖定和解鎖。
小結
當多個線程試圖對同一内容進行讀寫操作時适合使用讀寫鎖。
請了解并記住ReadWriteLock類讀寫鎖的寫法.
讀寫鎖相對于線程互斥的優勢在于高效,它不會對兩個讀線程進行盲目的互斥處理,當讀線程數量多于寫線程尤其如此,當全是寫線程時兩者等效。