python使用鎖訪問共享變數

2021-06-20 17:37:14 字數 1245 閱讀 3703

#!/usr/bin/env python

import threading,time

q=threading.lock() #create a lock object

def mythread():

global a

q.acquire() #acquire the lock

a=threading.currentthread().getname()

print "a is modified by",a

q.release() #release the lock

for i in range(1,4):

t=threading.thread(target=mythread,name="thread %d"%i)

t.start()

如果乙個執行緒想多次獲取資源訪問權,在上面的程式中連續兩次使用acquire(),將會造成死鎖現象,因為第一次申請到的資源還沒有來得及釋放,就進行了第二次申請。python中的threading模組提供了可重入鎖rlock,rlock提供了計數器。乙個執行緒申請到某個資源,計數器會加1,釋放掉這個資源計數器會減1.這樣,乙個執行緒可以多次請求同乙個資源,在所有請求都被釋放後,其它執行緒才允許獲取這個鎖。上面的**做簡單修改,可得:

#!/usr/bin/env python

import threading,time

q=threading.rlock() #create a lock object

def mythread():

global a

q.acquire() #acquire the lock

a=threading.currentthread().getname()

print "a is modified by",a

q.acquire()

a=threading.currentthread().getname()

print "a is modified by %s the second time"% a

q.release()

q.release() #release the lock

for i in range(1,4):

t=threading.thread(target=mythread,name="thread %d"%i)

t.start()

訪問共享變數

啟動四個執行緒,兩個執行緒對i加1,兩個執行緒對i減1。如果多個執行緒共享同乙個變數,且對變數的操作相同,則可以通過實現runnable介面實現 為簡單起見,對方法進行同步,而不是對操作共享變數的 塊同步 public class main class myrun implements runnab...

目錄訪問共享C 怎麼訪問共享目錄

本文是一篇關於目錄訪問共享的帖子 用c 訪問共享目錄老是湧現許可權問題,讓人很頭疼,研究了良久找到一種方法,貼上 public class identityscope idisposable else finally protected virtual void dispose bool dispo...

10 共享訪問不到 如何訪問共享

一是在網路中,找到要訪問的那台電腦,雙擊開啟 二是直接在 開始 執行 中,輸入想要訪問的電腦的計算機名或ip位址。在網路中找到電腦訪問,需要同一區域網中的電腦數量要少於10臺,才好。如果電腦過多,這樣訪問就比較慢了。共享,先說下吧。就是說,我電腦中,有檔案,想要其他人的電腦可以看到,那麼,我可以建乙...