蚂蚁牙黑147 2021-11-18 23:40 采纳率: 0%
浏览 32

多线程死锁问题!!理解不了

img

img

问题描述

图1:假设线程1获得书的锁,然后休眠1秒,将cpu给其他线程,线程2就拿到了笔的锁,所以就形成一个死锁,这个可以理解
图2:当线程1先执行,它先拿到书锁,然后休眠一秒,但是并不会释放锁的使用权,然后线程2拿到笔锁,按道理讲线程1不应该拿不到笔锁吗?

  • 写回答

3条回答 默认 最新

  • alaric.zhang 2021-11-19 00:08
    关注

    你的第二个图,本子和笔没有要求都要拿到,所以不会形成死锁,等待1秒只是执行的慢点而已。说明白点就是说,我要写字不要求笔和本子都有才能写,有笔我就在地上写,不等拿到本子,我有本子没有笔也能写。明白了吗?说经典的哲学家就餐问题,五个人中间放四支筷子,原文是要同时拿到左右手两只筷子才能吃饭,你例子中的意思就是拿一根筷子也能吃,只是吃的多少的问题,不存在,每人拿一根等别人放下另一根才能吃导致谁都吃不上饭。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月18日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表