python线程死锁的原因,python中lock锁和阻塞
1、程序永远无法运行结束,根本原因在于:
一个线程持有锁1并同时请求锁2,而另一个线程持有锁2并同时请求锁1。在得到对方的锁之前,双方都不会释放自己的锁,程序就这样陷入了僵局。
2、实例
两个线程会同时打开,程序会打印出来。
打印1首线程-1
打印1秒线程-1
打印2首线程-1
1printFirst Thread-2 (1)第一个线程先执行print1,获取lock 1,等待1秒。此时第二个线程已经打开,试图获取lock 1,但是无法获取,所以等待。
(2)第一个线程等待时间结束,获得锁2,打印后释放两个锁。之后,立即执行print2,获得lock 2,并等待1秒钟。
(3)此时第二个线程可以获取lock 1,开始执行print1,等待1秒。
(4)等待时间结束后,第一个线程持有锁2试图获取锁1,第一个线程持有锁1试图获取锁2,导致死锁。
以上是Python死锁的原因。希望对你有帮助。更多Python学习推荐:python教学
本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。