python 什麼是執行緒鎖,如何使用執行緒鎖

2021-10-06 22:48:50 字數 1129 閱讀 3097

執行緒鎖:目的是將一段**鎖住,一旦獲得鎖許可權,除非釋放執行緒鎖,否則其他**都無法獲得鎖許可權。

為什麼需要執行緒鎖?

多執行緒同時完成特定的操作時,由於並不是原子操作,所以在完成操作的過程中會被打斷去做其他的工作,可能會產生髒資料

例如:乙個執行緒讀取變數n(初始值為0)然後n++,最後輸出n。

當執行完n++後被打斷,由另外的執行緒做同樣的工作,這是n被加了兩次,所以n最後等於2而不是1

使用lock函式建立執行緒鎖,使用lock.acquire方法加鎖,使用lock.release方法解鎖。在加鎖後任何**執行acquire方法都會被阻塞,知道該鎖被釋放。

話不多說,上**

執行的時候可以將加鎖和解鎖**注釋掉執行下試試

from atexit import register

from threading import thread, lock, currentthread

from time import sleep, ctime

import random

lock = lock(

)print

(type

(lock)

)def

fun():

lock.acquire(

)# 加鎖

for i in

range(5

):print

('thread name'

,'='

, currentthread(

).name,

'i',

'=', i)

sleep(random.randint(1,

5)) lock.release(

)#解鎖

defmain()

:for i in

range(3

):thread(target = fun)

.start(

)@register

defexit()

:print

('執行緒執行完畢:'

,ctime())

main(

)

什麼是共享鎖 什麼是排他鎖

什麼是共享鎖?什麼是排他鎖?共享鎖 如果事務t對資料a加上共享鎖後,則其他事務只能對a再加共享鎖,不能加排他鎖。獲准共享鎖的事務只能讀資料,不能修改資料。排他鎖 如果事務t對資料a加上排他鎖後,則其他事務不能再對a加任任何型別的封鎖。獲准排他鎖的事務既能讀資料,又能修改資料。簡要說明為什麼會發生死鎖...

什麼是事務?什麼是鎖?

a.事務就是被繫結在一起作為乙個邏輯工作單元的sql語句分組,如果任何乙個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態,或者是上有個節點。b.為了確保要麼執行,要麼不執行,就可以使用事務。要將有組語句作為事務考慮,就需要通過acid測試,即原子性,一致性,隔離性和永續性。c.鎖 在...

什麼是事務?什麼是鎖?

a.事務就是被繫結在一起作為乙個邏輯工作單元的sql語句分組,如果任何乙個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態,或者是上有個節點。b.為了確保要麼執行,要麼不執行,就可以使用事務。要將有組語句作為事務考慮,就需要通過acid測試,即原子性,一致性,隔離性和永續性。c.鎖 在...