推 ledia:正常執行時, __finally 是執行不到的 01/21 14:38
→ ledia:所以你如果沒有在 WriteToDatabase 最後面加 ReleaseMutex 01/21 14:38
→ ledia:那麼 main thread 一開始拿到的 mutex 就永遠放不出去了 01/21 14:38
→ ledia:那個參數如其名, 就是 mutex 建出來之後要不要預設就先拿到 01/21 14:39
→ ledia:擁有權 01/21 14:39
→ ledia:合理的做法應該是一開始不拿走擁有權, 有需要時再拿 01/21 14:40
推 ksmrt0123:樓上對 __finally 可能有誤解; 原po請看MSDN對 01/21 16:54
→ ksmrt0123:CreateMutex 的說明, Remarks 的第5段有解答你的疑問 01/21 16:55
推 cplusplus:finally在各個語言的意義應該都一樣 一樓有誤 01/21 16:57
→ cplusplus:sorry 我慢了... 01/21 16:57
→ QQ29:請教一下k大 我看了那段 可是說真的我看不懂他表達的意思 01/21 18:26
→ QQ29:wait函式不就是在等mutex可以用(signaled) 而要可以用是透過 01/21 18:26
→ QQ29:release 但是main一開始擁有onwership, wait一開始攔不住他 01/21 18:26
→ QQ29:做完也有呼叫release 我覺得我中間觀念有點問題 01/21 18:26
→ QQ29:可否請K大講解一下@@ 01/21 18:27
→ ksmrt0123:我請你看第5段 你好像看到第4段去了... 01/21 19:18
→ ksmrt0123:The thread that owns a mutex can specify the same 01/21 19:18
→ ksmrt0123:mutex in repeated wait function calls without 01/21 19:19
→ ksmrt0123:blocking its execution. 這段... 01/21 19:19
→ QQ29:對阿我看這段後 發現不太懂耶 01/21 19:41
→ QQ29:什麼specify ~不懂他表達的意思... 01/21 19:41
→ ksmrt0123:簡單說.. 得到幾次就要release幾次 01/21 20:26
→ ksmrt0123:你的main()從CreateMutex就得到一次, WaitForSingle..() 01/21 20:27
→ ksmrt0123:又得到一次, 所以要release 2次 01/21 20:28
→ ledia:我秀逗了... 請忽略我的推文 Orz 01/21 21:47
→ QQ29:意思就是說我create第二個參數設true就算一次了喔 01/21 22:06
→ QQ29:那他會交錯的輸出是運氣好嚕 剛好照順序跑thread? 01/21 22:06