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

看板Programming作者 (紫雁)時間16年前 (2008/04/24 22:56), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/4 (看更多)
※ [本文轉錄自 C_and_CPP 看板] 作者: james732 (紫雁) 站內: C_and_CPP 標題: [問題] 關於 WinAPI 的 CRITICAL_SECTION 時間: Thu Apr 24 21:58:40 2008 我寫了一個程式 故意讓它發生 race condition:http://0rz.tw/fe3XI 1. 設定一個全域變數 num = 5 2. 用兩個執行緒,分別做 num++ 與 num-- 的動作 3. 如果 num != 5 時,便印出這個值 這個程式確實能造成 race condition num偶爾會冒出4與6 接下來 我要用 CRITICAL_SECTION 來避免發生 race condition 修改後的程式碼:http://0rz.tw/183ZJ 在上列的 2. 前後加上 EnterCriticalSection 與 LeaveCriticalSection 我以為這樣就可以避免 race condition 了,也就是 num 不會出現 4 與 6 但是結果卻沒有改變,num 仍然會跑出 4 與 6 請問是不是我的觀念有誤,或者程式寫錯了呢? 使用 Visual Studio .NET 2005 SP1 第二個程式的完整專案資料夾壓縮檔在這:http://0rz.tw/ee40d (話說,為什麼 vs 的整個資料夾會這麼肥....) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.62.219 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.62.219

04/24 23:55, , 1F
改用_beginthreadex, _endthreadex()吧
04/24 23:55, 1F

04/24 23:59, , 2F
把MSDN看一遍你就知道了
04/24 23:59, 2F
文章代碼(AID): #1849-hFn (Programming)
討論串 (同標題文章)
文章代碼(AID): #1849-hFn (Programming)