多线程死锁
Posted reyinever
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程死锁相关的知识,希望对你有一定的参考价值。
# 死锁
# 如果程序中的多个线程互相等待对方持有的锁,而在得到对方的锁之前都不释放自己持有的锁,就会导致程序不能继续运行,# 这就是死锁。
# 死锁的表现是程序死循环
# 防止死锁:
# (1)全局考虑定义一个获得锁的顺序并且整个程序都遵守遵守
# (2)释放锁的时候按加锁的反序释放即可
import threading import time lock1=threading.Lock() lock2=threading.Lock() class T1(threading.Thread): def __init__(self,name): threading.Thread.__init__(self) self.name=name def run(self): lock1.acquire() # time.sleep(1) print(‘in thread ‘,self.name) time.sleep(2) lock2.acquire() print(‘in lock2 of T1‘) lock2.release() lock1.release() class T2(threading.Thread): def __init__(self,name): threading.Thread.__init__(self) self.name=name def run(self): lock2.acquire() print(‘in thread ‘,self.name) time.sleep(1) lock1.acquire() print(‘in lock1 of T2‘) lock1.release() lock2.release() def test(): t1=T1(‘t1‘) t2=T2(‘t2‘) t1.start() t2.start() if __name__ == ‘__main__‘: test()
以上是关于多线程死锁的主要内容,如果未能解决你的问题,请参考以下文章