推 lai5566:謝謝你! 05/31 09:37
※ 引述《lai5566 (5566得第一)》之銘言:
: flag[i]=Ture;----1
: turn=j;-----2
: while(flag[j]&&turn==j);
: {critical section}
: flag[i]=false;
: {remainder section}
: 上述的1跟2互換後,會無法互斥,請問怎樣的流程跑法,才會出現無法互斥!!
i j
__________________________________________
t1:turn=j;
t2:turn=i
t3:flag[j]=true;
t4:while(turn==i&&flag[i];//flag[i]非true
//則j可進入C.S
t5:while(turn==j&&flag[j]);
//此時turn==i,i可離開while loop
//i可進入C.S
此情況下i j皆在C.S裡
違反mutual exclusion
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 116.59.240.63