讀寫鎖的實現

2021-09-11 19:21:43 字數 2057 閱讀 3813

讀寫鎖主要用來解決讀-讀能共存,讀-寫不能共存,寫-寫不能共存的情況,它的

使用場景主要是讀寫分離,比如自己實現乙個快取,在重新整理快取的時候就需要用到讀寫鎖。下面擼上一段**,簡單實現以下。

/**

* @author administrator

* @date 2019/3/3

*/public class cache catch (exception e)finally

}/**

* 設定key對應的value,

* @param key

* @param value

* @return

*/public static final void put(string key,string value)catch (exception e)finally

}/**

* 清除所有的內容

*/public static final void clear()finally

}public static void main(string args)

}}).start();

new thread(new runnable()

}}).start();

}}

結果:

正在做寫的操作,key:0 ,value:0----開始

正在做寫的操作,key:0 ,value:0----結束

正在做寫的操作,key:1 ,value:1----開始

正在做寫的操作,key:1 ,value:1----結束

正在做寫的操作,key:2 ,value:2----開始

正在做寫的操作,key:2 ,value:2----結束

正在做寫的操作,key:3 ,value:3----開始

正在做寫的操作,key:3 ,value:3----結束

正在做讀操作,key: 0 ----開始

正在做讀操作,key: 0 ----結束 value:0

正在做寫的操作,key:4 ,value:4----開始

正在做寫的操作,key:4 ,value:4----結束

正在做寫的操作,key:5 ,value:5----開始

正在做寫的操作,key:5 ,value:5----結束

正在做寫的操作,key:6 ,value:6----開始

正在做寫的操作,key:6 ,value:6----結束

正在做寫的操作,key:7 ,value:7----開始

正在做寫的操作,key:7 ,value:7----結束

正在做讀操作,key: 1 ----開始

正在做讀操作,key: 1 ----結束 value:1

正在做讀操作,key: 2 ----開始

正在做讀操作,key: 2 ----結束 value:2

正在做讀操作,key: 3 ----開始

正在做讀操作,key: 3 ----結束 value:3

正在做讀操作,key: 4 ----開始

正在做讀操作,key: 4 ----結束 value:4

正在做讀操作,key: 5 ----開始

正在做讀操作,key: 5 ----結束 value:5

正在做讀操作,key: 6 ----開始

正在做讀操作,key: 6 ----結束 value:6

正在做讀操作,key: 7 ----開始

正在做讀操作,key: 7 ----結束 value:7

正在做讀操作,key: 8 ----開始

正在做讀操作,key: 8 ----結束 value:null

正在做讀操作,key: 9 ----開始

正在做讀操作,key: 9 ----結束 value:null

正在做寫的操作,key:8 ,value:8----開始

正在做寫的操作,key:8 ,value:8----結束

正在做寫的操作,key:9 ,value:9----開始

正在做寫的操作,key:9 ,value:9----結束

process finished with exit code 0

讀寫鎖的實現!

寫程式過程中總免不了用到鎖,雖然大牛們總是推薦無鎖程式設計,但那境界對我來說實在太遠了。專案中的資料資源的訪問,少不了鎖,考慮到都是讀的多,寫的少,於是參考網路,自己實現乙個寫優先的讀寫鎖。windows下的 class rwlock include rwlock.h rwlock rwlock r...

讀寫鎖的實現

首先介紹下pthread cond t。在linux下稱之為狀態變數,與之相關的有下面幾個api int pthread cond init pthread cond t cond,pthread condattr t cond attr int pthread cond signal pthrea...

C 實現讀寫鎖ReadWriteLock

1 讀寫鎖基本思想 寫者之間互斥 寫者和讀者之間互斥,而讀者之間並不需要互斥 2 讀寫鎖分為兩種 讀者優先和寫者優先 讀者優先,即當前只要可讀,就是可進入的 寫者優先,讀者需要看看當前是否有寫者要讀,如果有,則等待至沒有寫者正在寫或者需要寫的情況 注 兩種方式,都會存在飢餓現象 include re...