多執行緒程式設計(七)鎖Lock

2021-10-10 14:01:41 字數 1337 閱讀 9966

測試**

public

class

reentrantlocktest

for(

int i =

0; i <

10; i++

)finally}}

}

測試結果

加鎖次數0

加鎖次數1

加鎖次數2

加鎖次數3

加鎖次數4

加鎖次數5

加鎖次數6

加鎖次數7

加鎖次數8

加鎖次數9

解鎖次數0

解鎖次數1

解鎖次數2

解鎖次數3

解鎖次數4

解鎖次數5

解鎖次數6

解鎖次數7

解鎖次數8

解鎖次數9

測試**

public

class

readwritelocktest

catch

(exception e)

finally

}public

void

put(string key, string value)

catch

(exception e)

finally

}public

static

void

main

(string[

] args)})

.start()

;}}}

測試結果

main執行緒寫鎖已加鎖

main執行緒寫鎖已解鎖

thread-

0執行緒讀鎖已加鎖

thread-

1執行緒讀鎖已加鎖

thread-

2執行緒讀鎖已加鎖

thread-

3執行緒讀鎖已加鎖

thread-

4執行緒讀鎖已加鎖

thread-

0執行緒讀鎖已解鎖

thread-

3執行緒讀鎖已解鎖

thread-

4執行緒讀鎖已解鎖

thread-

1執行緒讀鎖已解鎖

thread-

2執行緒讀鎖已解鎖

結論 讀鎖都是在寫鎖之後執行

python 多執行緒 鎖Lock

在上次講gil鎖的時候 位址 有講到gil鎖也會有釋放的時候,就會導致資料的錯誤讀訪問,10萬次左右可能不會有影響,然而量級大上去,結果就不再是零了。那麼如何解決這種問題呢?這裡引入lock from threading import lock a 0 lock lock def add fun g...

python多執行緒程式設計與學習(鎖Lock)

你需要對多執行緒程式中的臨界區加鎖以避免競爭條件。例如只有一台印表機,但卻有兩個以上的輸入程式,這個時候印表機就是競爭資源。如何解決,給印表機上鎖,使用印表機時上鎖,使用完解鎖。在python中使用 threading 庫中的 lock 物件 用with語句,更加方便,自動獲取鎖,自動釋放,這樣可以...

Python多執行緒學習4 執行緒鎖lock

不使用 lock 的情況 函式一 全域性變數a的值每次加1,迴圈10次,並列印 def job1 global a for i in range 10 a 1 print job1 a 函式二 全域性變數a的值每次加10,迴圈10次,並列印 def job2 global a for i in ra...