1
lambdAlan 2021-06-26 17:29:11 +08:00 via Android
你这个例子描述的不完全。正确精准的例子是 A 进程进入临界区获取 A 的对象锁,想要操作共享变量需要获取 B 的对象锁,但是同时进程 B 也是同样状态,双方都持有自己的锁,都想获取对方的锁,且不主动释放自己的锁
|
3
lambdAlan 2021-06-26 19:05:15 +08:00 via Android
@lolcat 没加锁就没有死锁的概念了啊,要避免死锁就是打破 4 个必要条件之一,其中只有互斥是无法打破的,因为锁就是为了互斥。
|
4
gBurnX 2021-06-26 19:09:59 +08:00 1
这个问题里的变量 X,只是个障眼法,问题的答案与它无关。
1.互斥条件: 资源 1:进程 A 。 资源 2:进程 B 。 这里要把这两个进程当做唯一资源来理解,是这个问题的关键。 一个资源(进程 A 或经常 B ),每次只能被一个进程使用,即在一段时间内某资源仅为一个进程所使用。此时如果有其他进程请求该资源,则请求进程只能等待。 2.请求与保持条件: 对于进程 A 来说,进程 A 已经保持了至少一个资源(进程 A ),但又提出了新的资源请求(进程 B ),而该资源(进程 B )已经被其他进程(进程 B )占有,此时请求进程(进程 A )被阻塞,但对自己已经获得资源(进程 A )保持不放。 3.不可剥夺条件: 对于进程 B 来说,进程 B 未使用完的资源(经常 B )在未使用完毕之前,不能被其他进程(进程 A )强行夺走,即只能由获得该资源的进程(进程 B )自己来释放。 |
5
oneoyn 2021-06-27 20:00:04 +08:00
这种代码都能写出来 那你啊该考虑下是不是该换个行业发展了
|