日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python中的鎖對象——可重入鎖

如果您嘗試運行下面提供的代碼,鎖對象將在第一次調(diào)用acquire()方法時獲得鎖,但第二次不會。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,玉溪企業(yè)網(wǎng)站建設,玉溪品牌網(wǎng)站建設,網(wǎng)站定制,玉溪網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,玉溪網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

為什么會這樣?因為正常的鎖對象一旦被獲取就不能被重新獲取,即使相同的線程試圖這樣做。

但是為什么會有人嘗試兩次調(diào)用acquire()方法呢?讓我們舉一個簡單的例子來演示這個簡單的鎖定問題:

lock = threading.Lock()

def get_first_line():
    lock.acquire()
    try:
        # read some file and get the first line
    finally:
        lock.release()
    return data

def get_second_line():
    lock.acquire()
    try:
        # read the same file and get the second line
    finally:
        lock.release()
    return data

在上面的代碼中,我們有兩個不同的函數(shù)從共享資源中讀取不同部分的數(shù)據(jù)。我們使用了鎖定機制來防止任何其他線程在我們的線程讀取文件時修改文件的數(shù)據(jù)。

現(xiàn)在考慮您想要逐個調(diào)用這兩個函數(shù),您將這樣做:

first = get_first_line()
second = get_second_line()

return first, second 

但是這個調(diào)用仍然不是線程安全的,因為當您從共享資源中讀取數(shù)據(jù)時,在兩個函數(shù)調(diào)用之間可以有任何其他線程可以修改共享資源的內(nèi)容。

為了避免這種情況,我們可以獲取一個鎖,然后調(diào)用這兩個函數(shù):

lock.acquire()

try:
    first = get_first_line()
    second = get_second_line()
finally:
    lock.release()
return first, second 

但是,這段代碼不會起作用,因為我們將在同一線程內(nèi)的鎖對象上調(diào)用acquire(),試圖在調(diào)用函數(shù)之前已經(jīng)獲取的函數(shù)內(nèi)再次獲取鎖。

因此,在這種情況下,不能使用基本的鎖對象。對于這樣的情況我們有RLock類。


對象:Python 多線程

RLock 代表可重入鎖。同一個線程可以多次獲取可重入鎖。

RLock 對象也有兩個可以調(diào)用的方法,它們是:

  1. acquire()方法
  2. release()方法

這里有一個簡單的例子來演示RLock對象的工作:

如果我們使用RLock對象,那么簡單的鎖定問題示例中的代碼也將毫無問題地工作:

lock = threading.RLock()

lock.acquire()

try:
    first = get_first_line()
    second = get_second_line()
finally:
    lock.release()
return first, second 

上面的代碼可以正常工作。




文章題目:Python中的鎖對象——可重入鎖
URL網(wǎng)址:http://m.5511xx.com/article/cdohjsd.html