死锁免费与饥饿免费

Yak*_*kov 3 algorithm parallel-processing concurrency synchronization deadlock

是否会发生互斥算法不能保持死锁自由属性,但它能维持饥饿自由吗?

谢谢

new*_*int 11

饥饿自由度可以被定义为:无论什么过程p,每次调用acquire_mutex()由issused p最终终止.或者任何试图进入关键部分的过程最终都会进入关键部分.

死锁自由:不管什么时候Ť,如果前Ť一个或几个工艺已经调用的操作acquire_mutex(),其中没有在时刻终止其调用Ť,然后有一个时间T">Ť在其中,已调用的进程acquire_mutex()终止其调用.[Raynal,并发编程:算法,原理和基础]或者如果进程试图进入关键部分,那么某个进程(不是必需的进程)最终将进入临界区.或至少一个,总是赢.

请注意,死锁自由是说某些进程会取得进展,但其他进程可能会陷入困境(挨饿),试图进入关键部分.一开始听起来很奇怪,但事实并非如此:并非所有线程都被卡住,因此没有死锁,即死锁自由.

另一方面,饥饿自由说每个试图进入关键部分的过程最终都会这样做.没有任何进程会挨饿.

这使得饥饿自由比死锁自由更强大.

回答你的问题是否定的.


Per*_*Per 5

不可以。每个合理的饥饿定义都包括僵局。