首页 > 编程语言 > 详细

python3 递归锁解决死锁问题

时间:2020-12-26 18:03:05      阅读:42      评论:0      收藏:0      [点我收藏+]

解决:典型死锁问题科学家吃面
code
import time
from threading import Thread, RLock
 
 
fork_lock = noodle_lock = RLock()
 
 
def eat1(name):
    noodle_lock.acquire()
    print(%s 抢到了面条 % name)
    fork_lock.acquire()
    print(%s 抢到了叉子 % name)
    print(%s 吃面 % name)
    fork_lock.release()
    noodle_lock.release()
 
 
def eat2(name):
    fork_lock.acquire()
    print(%s 抢到了叉子 % name)
    time.sleep(1)
    noodle_lock.acquire()
    print(%s 抢到了面条 % name)
    print(%s 吃面 % name)
    noodle_lock.release()
    fork_lock.release()
 
 
for name in [哪吒, nick, tank]:
    t1 = Thread(target=eat1, args=(name,))
    t2 = Thread(target=eat2, args=(name,))
    t1.start()
    t2.start()
outputs 
macname@MacdeMacBook-Pro py % python3 cccccc.py
哪吒 抢到了面条
哪吒 抢到了叉子
哪吒 吃面
哪吒 抢到了叉子
哪吒 抢到了面条
哪吒 吃面
nick 抢到了面条
nick 抢到了叉子
nick 吃面
nick 抢到了叉子
nick 抢到了面条
nick 吃面
tank 抢到了面条
tank 抢到了叉子
tank 吃面
tank 抢到了叉子
tank 抢到了面条
tank 吃面
macname@MacdeMacBook-Pro py %

 

 
 
 
 
 
 
 
 
 
 
 

python3 递归锁解决死锁问题

原文:https://www.cnblogs.com/sea-stream/p/14192161.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!