《硬道理》系列 第一回 程式中的「鎖」

2022-02-19 15:03:08 字數 1203 閱讀 1881

回到目錄

由非更新(讀取)操作建立的鎖。其他使用者可以併發讀取資料,但任何事務都不能獲取資料上的排它鎖,直到已釋放所有共享鎖。

共享鎖(s鎖)又稱為讀鎖,若事務t對資料物件a加上s鎖,則事務t只能讀a, 不能修改a;其他事務只能再對a加s鎖,而不能加x鎖,直到t釋放a上的s鎖。這就保證了其他事務可以讀a,但在t釋放a上的s鎖之前不能對a做任何修改。

1.共享鎖(s鎖):如果事務t對資料a加上共享鎖後,則其他事務只能對a再加共享鎖,不能加排他鎖。獲准共享鎖的事務只能讀資料,不能修改資料。

排他鎖(x鎖):如果事務t對資料a加上排他鎖後,則其他事務不能再對a加任任何型別的封鎖。獲准排他鎖的事務既能讀資料,又能修改資料。

2.windows中可以有共享鎖

3.其它使用者可以併發讀取,查詢資料。但不能修改,增加,刪除資料。資源共享.

排它鎖又稱為寫鎖((exclusive lock,簡記為x鎖)),若事務t對資料物件a加上x鎖,則只允許t讀取和修改a,其它任何事務都不能再對a加任何型別的鎖,直到t釋放a上的鎖。它防止任何其它事務獲取資源上的鎖,直到在事務的末尾將資源上的原始鎖釋放為止。在更新操作(insert、update 或 delete)過程中始終應用排它鎖。

共享鎖又稱為讀鎖(share lock,簡記為s鎖),若事務t對資料物件a加上s鎖,則其它事務只能再對a加s鎖,而不能加x鎖,直到t釋放a上的s鎖。

c#中的獨佔鎖

//

資源static

int theresource = 0

;

//讀、寫操作鎖

static readerwriterlock readerwriterlock = new

readerwriterlock();

//讀資料

static

void

read()

", theresource);

thread.sleep(

10);

console.writeline(

"讀取資料結束,theresource =

", theresource);

//釋放讀操作鎖

readerwriterlock.releasereaderlock();

}catch}}

static

void main(string

args)

回到目錄

IT餐館 第一回 前言

最近一段時間以來,我一直在尋找一種新的寫blog方式。因為傳統的自說自話方式已不能 表達出每天在我頭腦中不斷衝突的思想。當然這些思想有些是我個人的,有些則來自周圍同事 以及領導,還有以前同事的一些遭遇。其中有對前沿技術的討論,對產品 專案的分析,對模 式思想 架框 mvc uml 等思想的交流。還有...

IT餐館 第一回 前言

最近一段時間以來,我一直在尋找一種新的寫blog方式。因為傳統的自說自話方式已不能 表達出每天在我頭腦中不斷衝突的思想。當然這些思想有些是我個人的,有些則來自周圍同事 以及領導,還有以前同事的一些遭遇。其中有對前沿技術的討論,對產品 專案的分析,對模 式思想 架框 mvc uml 等思想的交流。還有...

初讀Redis 第一回

1.redis的五種資料型別 五種物件 字串物件,列表物件,雜湊物件,集合物件和有序集合物件 2.redis用到的主要資料結構 簡單動態字串 sds 雙端鍊錶,字典,壓縮列表,整數集合等等 注意 redis並沒有直接使用這些資料結構來實現鍵值對資料庫,而是基於這些資料結構建立了乙個物件系統,這個系統...