Python 多线程死锁

来源:互联网 发布:手机淘宝怎么没有社区 编辑:程序博客网 时间:2024/06/06 01:01
import  threadingimport timemutexA=threading.Lock() #创建一个锁mutexB=threading.Lock() #创建一个锁class  threadA(threading.Thread):    def run(self):        if  mutexA.acquire(1): #锁定成功就继续执行,锁定不成功,就一直等待            print(self.name+"我拿到了资源A,还没有拿到资源B,等待...")            time.sleep(3)            #mutexA.release()   #没拿到资源B,先把手中的资源A释放,就可以避免死锁            if  mutexB.acquire(1): #锁定不成功。一直等待                print(self.name+"我拿到了资源A和资源B,我的活干完了!")                mutexB.release()            mutexA.release()class  threadB(threading.Thread):    def run(self):        if  mutexB.acquire(1): #锁定成功就继续执行,锁定不成功,就一直等待            print(self.name+"我拿到了资源B,还没有拿到资源A,等待...")            time.sleep(3)            #mutexB.release()  #没拿到资源A,先把手中的资源B释放,就可以避免死锁            if mutexA.acquire(1): #锁定不成功。一直等待                print(self.name+"我拿到了资源A和资源B,我的活干完了!")                mutexA.release()            mutexB.release()#开启两个线程thread1=threadA()thread1.start()thread2=threadB()thread2.start()

原创粉丝点击