Re: [問題] 關於 CRITICAL_SECTION 與執行緒同步
※ 引述《meltice (三億兩千萬大散戶)》之銘言:
: 我是用你的這個範例去做測試
: http://studentweb.ncnu.edu.tw/94321016/rc1.txt
: 首先
: 我覺得_beginthread不太適合跟WaitForMultipleObjects一起使用
: 因為_beginthread是CRT 而WaitForMultipleObjects是Win32 API
: 我把_beginthread換成CreateThread之後
: 在我的電腦上跑出現num!=5的數量就減少八成以上
: 而且我把WaitForMultipleObjects的return值印出來看
: 使用_beginthread會產生一堆錯誤的return value
: 換成CreateThread後就沒有錯誤了
那如果我要用 _beginthreadex
(書上說 如果有用到C的標準函式 就要用 _beginthreadex)
那有沒有可以代替 WaitForMultipleObjects 的函式呢?
: 還有
: 你的foo()裡面最後要加上_endthread();
: 不然Windows的控制碼會不斷增加(從工作管理員可以看到)
: 或者如果使用CreateThread記得要CloseHandle
這個地方我後來有發現 也謝謝你的提醒
: 最後我又做了個實驗
: 我猜你的CPU應該也是雙核心以上的吧
: 因為我從工作管理員的設定相關性讓程式只在某一顆CPU執行
: 結果神奇的事發生了
: num就永遠都會等於5
: 所以你這隻程式就算不使用critical section保護
: 在單核心CPU下應該也是OK的(至少在我電腦上看起來是OK的)
: 或者是可能需要非常久的時間才會發生"意外"吧
不是耶 我的電腦也是單核的
而且連 hyper-threading 都沒有支援
所以工作管理員只看得到一顆 CPU 而已
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.22.18.83
推
04/25 19:46, , 1F
04/25 19:46, 1F
→
04/25 19:46, , 2F
04/25 19:46, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):