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