[問題] 關於 CRITICAL_SECTION 與執行緒同步
※ [本文轉錄自 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
04/24 23:55, 1F
→
04/24 23:59, , 2F
04/24 23:59, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):