[理工] [OS] test-and-set
想問的是使用此指令在design criticl section時,
恐龍的部分程式碼如下,
do{
waiting[i] = True;
key = True;
while ( waiting[i] && key )
key = TestAndSet(&lock);
C.S.
j = ( i+1 ) % n;
while ( j != i && !waiting[j] )
j = ( j+1 ) % n;
if ( j = = i )
lock = False;
else
waiting[j] = False;
R.S
}while(true);
第三行到第五行為何不能簡寫成如下呢?
while(waiting[i] && TestAndSet(&lock))
do no-ip
不了解為什麼要用一個key去接他的值。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.111.134
※ 文章網址: http://www.ptt.cc/bbs/Grad-ProbAsk/M.1419426459.A.260.html
※ 編輯: galapous (36.228.111.134), 12/24/2014 21:09:38
※ 編輯: galapous (36.228.111.134), 12/24/2014 21:10:05
推
12/24 21:30, , 1F
12/24 21:30, 1F
推
12/25 03:34, , 2F
12/25 03:34, 2F
→
12/25 03:35, , 3F
12/25 03:35, 3F
→
12/25 03:36, , 4F
12/25 03:36, 4F
→
12/25 03:37, , 5F
12/25 03:37, 5F
→
12/25 03:37, , 6F
12/25 03:37, 6F
→
12/25 03:44, , 7F
12/25 03:44, 7F
→
12/25 03:44, , 8F
12/25 03:44, 8F
→
12/25 09:17, , 9F
12/25 09:17, 9F
→
12/25 09:17, , 10F
12/25 09:17, 10F
→
12/25 18:07, , 11F
12/25 18:07, 11F
→
12/25 18:07, , 12F
12/25 18:07, 12F
→
12/25 18:08, , 13F
12/25 18:08, 13F
→
12/25 18:52, , 14F
12/25 18:52, 14F
→
12/25 18:52, , 15F
12/25 18:52, 15F
→
12/25 19:21, , 16F
12/25 19:21, 16F
→
12/25 19:22, , 17F
12/25 19:22, 17F
→
12/25 19:22, , 18F
12/25 19:22, 18F
推
12/25 19:28, , 19F
12/25 19:28, 19F
→
12/25 19:38, , 20F
12/25 19:38, 20F
→
12/25 20:21, , 21F
12/25 20:21, 21F
→
12/25 20:22, , 22F
12/25 20:22, 22F
→
12/25 20:23, , 23F
12/25 20:23, 23F
→
12/25 20:24, , 24F
12/25 20:24, 24F
→
12/25 20:24, , 25F
12/25 20:24, 25F
補上完整程式碼
※ 編輯: galapous (36.228.111.134), 12/25/2014 20:31:20
→
12/25 20:32, , 26F
12/25 20:32, 26F
推
12/25 21:00, , 27F
12/25 21:00, 27F
→
12/25 21:27, , 28F
12/25 21:27, 28F
→
12/25 21:27, , 29F
12/25 21:27, 29F