0
我有下面的代码,我想知道printf
打印:
我做到了,但我不知道我的回答。信号量p3永久封锁?
变量:d = 0,A = 1,B = 1,C = 0。
p1 p2 p3
while(1) { while(1){ while(1){
P(A); P(B); P(A); P(B); P(C); P(C);
d = 2*d; d = d+1; printf("%d\n",d);
V(C) V(C); V(A); V(B);
} } }
我的尝试是:
C=0, p3
被阻塞 开始形式过程
p1 A=0, B=0 and d=0 and C=1.
p2 blocks because A=0 and B=0, p3
它还块在第二P(C)
。 A=0, B=0, C=0
发生死锁,并且printf
不会打印任何内容。它是否正确?
对于我们这些没有精神或班上的人,P(X)和V(X)是做什么的? – Dukeling
@Dukeling,'P'传统上是'down'/'wait','V'是'up' /'signal'。 – zch
对不起,P(X)下降,V(X)上升 – sdafad