死锁

死锁
在线程共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。

#coding=utf-8
import threading
import time

#创建互斥锁
lockA=threading.Lock()
lockB=threading.Lock()

class Mythread1(threading.Thread):
    def run(self):
        if lockA.acquire():
            print(self.name,'执行')
            time.sleep(1)
            if lockB.acquire():
                print(self.name,'执行')
                lockB.release()
            lockA.release()

class Mythread2(threading.Thread):
    def run(self):
        if lockB.acquire():
            print(self.name,'执行')
            time.sleep(1)
            if lockA.acquire():
                print(self.name,'执行')
                lockA.release()
            lockB.release()

if __name__ == '__main__':
    t1=Mythread1()
    t2=Mythread2()
    t1.start()
    t2.start()
    
结果:永远结束不了
Thread-1 执行
Thread-2 执行

你可能感兴趣的:(死锁)