讀寫鎖,樂觀鎖與悲觀鎖

保證數據安全,處理多用戶併發訪問。
悲觀鎖,鎖如其名,他對世界是悲觀的,他認爲別人訪問正在改變的數據的概率是很高的,所以從數據開始更改時就將數據鎖住,知道更改完成才釋放。
樂觀鎖,他對世界比較樂觀,認爲別人訪問正在改變的數據的概率是很低的,所以直到修改完成準備提交所做的的修改到數據庫的時候纔會將數據鎖住。完成更改後釋放。
悲觀鎖會造成訪問數據庫時間較長,併發性不好,特別是長事務。

讀寫鎖特點:
1)多個讀者可以同時進行讀
2)寫者必須互斥(只允許一個寫者寫,也不能讀者寫者同時進行)
3)寫者優先於讀者(一旦有寫者,則後續讀者必須等待,喚醒時優先考慮寫者)

一次只有一個線程可以佔有寫模式的讀寫鎖, 但是可以有多個線程同時佔有讀模式的讀寫鎖. 正是因爲這個特性,
當讀寫鎖是寫加鎖狀態時, 在這個鎖被解鎖之前, 所有試圖對這個鎖加鎖的線程都會被阻塞.
當讀寫鎖在讀加鎖狀態時, 所有試圖以讀模式對它進行加鎖的線程都可以得到訪問權, 但是如果線程希望以寫模式對此鎖進行加鎖, 它必須直到所有的線程釋放鎖.
通常, 當讀寫鎖處於讀模式鎖住狀態時, 如果有另外線程試圖以寫模式加鎖, 讀寫鎖通常會阻塞隨後的讀模式鎖請求, 這樣可以避免讀模式鎖長期佔用, 而等待的寫模式鎖請求長期阻塞.
讀寫鎖適合於對數據結構的讀次數比寫次數多得多的情況. 因爲, 讀模式鎖定時可以共享, 以寫模式鎖住時意味着獨佔, 所以讀寫鎖又叫共享-獨佔鎖.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章