蚂蚁牙黑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日