死锁和饥饿的区别

参考1

参考2

  1. 首先死锁是同步的,饥饿时异步的。也就是说,死锁可以认为是两个线程或进程同时在请求对方占有的资源

  2. 饥饿可以认为是一个线程或是进程在无限的等待另外两个或多个线程或进程占有的但是不会往外释放的资源。

    当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。

  • 介绍“死锁”的例子1:如果线程A锁住了记录R1并等待记录R2,而线程B锁住了记录R2并等待记录R1,这样两个线程A和B就发生了死锁现象。

  • 介绍“死锁”的例子2:两个山羊过一个独木桥,两只羊同时走到桥中间,一个山羊等另一个山羊过去了然后再过桥,另一个山羊等这一个山羊过去,结果两只山羊都堵在中间动弹不得。

  • 介绍饥饿的例子:资源在其中两个或以上线程或进程相互使用,第三方线程或进程始终得不到。想像一下三个人传球,其中两个人传来传去,第三个人始终得不到。

posted @ 2020-12-21 12:52  TR_Goldfish  阅读(1077)  评论(0编辑  收藏  举报