Re: [問題] 關於 CRITICAL_SECTION 與執行緒同步

看板Programming作者 (三億兩千萬大散戶)時間17年前 (2008/04/25 05:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
我是用你的這個範例去做測試 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後就沒有錯誤了 還有 你的foo()裡面最後要加上_endthread(); 不然Windows的控制碼會不斷增加(從工作管理員可以看到) 或者如果使用CreateThread記得要CloseHandle 最後我又做了個實驗 我猜你的CPU應該也是雙核心以上的吧 因為我從工作管理員的設定相關性讓程式只在某一顆CPU執行 結果神奇的事發生了 num就永遠都會等於5 所以你這隻程式就算不使用critical section保護 在單核心CPU下應該也是OK的(至少在我電腦上看起來是OK的) 或者是可能需要非常久的時間才會發生"意外"吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.14.177.226
文章代碼(AID): #184Mxp37 (Programming)
討論串 (同標題文章)
文章代碼(AID): #184Mxp37 (Programming)