[理工] [OS] synchronization
用下面這個演算法來實作critical section
do
{
flag[i] = TRUE; ---------------1
turn = j; ---------------2
while (flag[j] && turn == j) ;
{critical section}
flag[i] = false;
{remainder section}
} while (1);
flag陣列紀錄個別process是否想要進入critical section
turn變數指出目前系統允許哪個process進入critical section
但是只要我標示的1跟2互換
變成 trun = j;
flag[i] = TRUE;
這個時候演算法就沒辦法達到預期的目的
請問是什麼原因呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.24.47
推
10/31 08:35, , 1F
10/31 08:35, 1F
→
10/31 08:36, , 2F
10/31 08:36, 2F
推
10/31 08:38, , 3F
10/31 08:38, 3F
→
10/31 08:39, , 4F
10/31 08:39, 4F
→
10/31 08:39, , 5F
10/31 08:39, 5F
→
10/31 08:40, , 6F
10/31 08:40, 6F
→
10/31 08:40, , 7F
10/31 08:40, 7F
→
10/31 08:41, , 8F
10/31 08:41, 8F
→
10/31 08:42, , 9F
10/31 08:42, 9F
→
10/31 08:43, , 10F
10/31 08:43, 10F
推
10/31 13:39, , 11F
10/31 13:39, 11F
→
08/09 10:49, , 12F
08/09 10:49, 12F
→
09/11 14:01, , 13F
09/11 14:01, 13F
→
12/15 00:26,
7年前
, 14F
12/15 00:26, 14F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 5 篇):