看板 Programming 關於我們 聯絡資訊
※ [本文轉錄自 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
scaaa:改用_beginthreadex, _endthreadex()吧 59.116.169.235 04/24 23:55
scaaa:把MSDN看一遍你就知道了 59.116.169.235 04/24 23:59