用with管理lock鎖

2022-06-29 18:03:13 字數 788 閱讀 2743

import

threading

import

time

num = 0 #

全域性變數多個執行緒可以讀寫,傳遞資料

mutex = threading.lock() #

建立乙個鎖

class

mythread(threading.thread):

defrun(self):

global

num with mutex:

for i in range(10000000):

num += 1

print

(num)

mythread =

for i in range(5):

t =mythread()

t.start()

for i in

mythread:

t.join()

print("

game over")

'''with mutex: #with表示自動開啟自動釋放鎖

for i in range(1000000): #鎖定期間,其他人不可以幹活

num+=1

#上面的和下面的是等價的

if mutex.acquire(1):#鎖住成功繼續幹活,沒有鎖住成功就一直等待,1代表獨佔

for i in range(1000000): #鎖定期間,其他執行緒不可以幹活

num+=1

mutex.release() #釋放鎖

'''

lock執行緒鎖

lock 實現提供了比使用 synchronized 方法和語句可獲得的更廣泛的鎖定操作。lock鎖可以顯示的獲取鎖物件和釋放鎖,而synchorized則是隱式的。不使用塊結構鎖就失去了使用 synchronized 方法和語句時會出現的鎖自動釋放功能。lock 介面的實現允許鎖在不同的作用範圍內...

執行緒鎖Lock

from threading import thread,lock import time deffunc global n n 1n 10t list for i in range 10 t thread target func,t.start for t in t list t.join pri...

鎖的認識lock

case 1 事務正在更新一張table,並且該事務並沒有處理結束。此時,使用select查詢出來的結果是?update之前的?之後的?始終沒有output,知道事務處理結束?1 始終處於被堵塞狀態 begin tran update student set name change where id...