看板 Grad-ProbAsk 關於我們 聯絡資訊
do { while(flag[j]); flag[i]=true; c.s flag[i]=false; r.e }while(1) 滿足臨界區域三條件 1.互斥滿足 若pi和pj皆想進入c.s,則兩者都不能進去 若pi想進入c.s,且pj不想進入c.s,則pi進入c.s 若pi不想進入c.s,且pj想進入c.s,則pj進入c.s 所以pi和pj不會同時進入c.s=>滿足互斥 2.不滿足進入 若pi和pj皆想進入c.s,則產生死結。 3.bounded waiting滿足 如果pi進入c.s,則pj將在while。 如果pi離開c.s,即flag[i]=false,表示pj可以進入c.s. 如果pi離開後又想馬上企圖進入c.s,則pi將在while。 以保證pj進入c.s,所以pj最多等一次後即可進入c.s 請問,這個答案是否是正確的?謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.137.26.219
gensim:第一個互斥並不滿足 10/03 01:28
gensim:while(flag[0]);while(flag[1]);flag[1]=true;flag[0]=true 10/03 01:30
Carbunkl:借標題問 若滿足互斥 則不會有Race condition?還是三個 10/03 02:10
Carbunkl:都要滿足? 10/03 02:10
gensim:基本上互斥滿足 race condition就算解決 10/04 02:49
gensim:但progress和bounded waiting未滿足的話又會造成別的問題 10/04 02:50
gensim:如starvation或deadlock... 10/04 02:51