1、程序永远不会结束的根本原因是:
一个线程持有锁1,同时要求锁2,另一个线程持有锁2,同时要求锁1。如果他们得不到对方的锁,他们就不会释放自己的锁。程序陷入僵局。
2、实例
将同时打开两个线程,打印程序
print1firstThread-1 print1secondThread-1 print2firstThread-1 print1firstThread-2
(1)第一个线程首先执行print1,获得锁1,等待1秒。此时,第二个线程已经打开,试图获得锁1,但无法获得,因此等待
(2)第一行等待时间结束,获得锁2,打印后释放两把锁。然后立即开始执行print2,获得锁2,等待1秒
(3)此时可以锁定第二个线程1,开始执行print1,等待1秒
(4)等待时间结束后,第一线程持有锁2试图获得锁1,第一线程持有锁1试图获得锁2,陷入僵局
以上就是Python死锁的原因,希望对大家有所帮助。更多Python学习推荐:python教学
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。