[問題] Thread and Event的疑惑
http://msdn.microsoft.com/en-us/library/ms686915(v=VS.85).aspx
這是關於使用event object的範例
讓我不解的是
他開4條thread 但是他卻只有一次的setEvent
假設說 這四條thread同時都卡在 WaitForSingleObject
當event signal了 同時這四條 應該要會一起有權力跑switch
印這些字串
但很怪的是
他event是設定manual-reset 所以應該setEvent後就永遠是signal了
但是他印的這些字串 卻完全不會交錯
我預期他會印Thread %d reading from buffer
可能會變成ThThread xxxx readreing之類的字串沒印完就換人印
但事實上我跑這段完全不會有這現象.....讓我不解
於是我把code改為
printf("Thread %d reading from buffer\n",
GetCurrentThreadId());
printf("Thread %d reading from buffer2\n",
GetCurrentThreadId());
printf("Thread %d reading from buffer3\n",
GetCurrentThreadId());
故意印3行
結果會變成
Thread 4592 reading from buffer
Main thread waiting for threads to exit...
Thread 5752 reading from buffer
Thread 5580 reading from buffer
Thread 3568 reading from buffer
Thread 4592 reading from buffer2
Thread 5752 reading from buffer2
Thread 5580 reading from buffer2
Thread 3568 reading from buffer2
Thread 4592 reading from buffer3
Thread 5752 reading from buffer3
Thread 5580 reading from buffer3
Thread 3568 reading from buffer3
完全不會被中斷
但我自己覺得大家都有權利跑switch那段 應該要交錯印才是阿
還是我對WaitForSingleObject有誤會...
請有經驗的版友指點迷津 實在想不透
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
推
06/08 16:36, , 1F
06/08 16:36, 1F
→
06/08 18:49, , 2F
06/08 18:49, 2F
推
06/08 20:11, , 3F
06/08 20:11, 3F
→
06/08 20:11, , 4F
06/08 20:11, 4F
→
06/08 20:32, , 5F
06/08 20:32, 5F
→
06/08 20:33, , 6F
06/08 20:33, 6F
推
06/08 21:28, , 7F
06/08 21:28, 7F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):