我有一個用C++編寫的多線程應用程序。我正在使用互斥鎖進行文件寫入。我懷疑在執行該程序的某個地方,互斥體沒有被釋放。
所以我想知道是否有一種方法來檢查互斥鎖和釋放文件,編程或其他方式。
我正在SuseLinux上運行代碼,順便說一句。
謝謝,檢查互斥量版本
Q
檢查互斥量版本
1
A
回答
8
歡迎來到調試多線程代碼的美妙世界。沒有靈丹妙藥可以解決你的問題,但至少你應該使用成語來管理你的互斥。這意味着將互斥體封裝在一個C++類中,該類聲明該類的實例被創建時聲明該互斥體,並在它(該類實例)被銷燬時釋放該互斥體。您也可以有利地記錄索賠/版本,但請注意,這可能會引入計時錯誤和人爲因素。
+2
Boost :: Threads庫擁有一套非常好的便攜式RAII互斥鎖......可以幫助您避免因持續鎖定造成的死鎖。 – paxos1977 2009-12-10 20:54:36
相關問題
- 1. getopts檢查互斥參數
- 2. Java中互斥線程的互斥量?
- 3. 互斥或不互斥互斥?
- 4. 遞歸或錯誤檢查互斥?
- 5. 信號量與互斥量
- 6. 將非互斥變量重新編碼爲互斥變量
- 7. 檢查SPSS中二元變量的相互排斥性
- 8. 在while循環檢查中處理互斥變量
- 9. GNU Make中的互斥量?
- 10. erlang信號量(互斥)
- 11. 互斥量保護宏
- 12. C Pthreads互斥量值?
- 13. 互斥
- 14. 互斥
- 15. volatile變量而不是互斥鎖變量來檢查改變的數據
- 16. BoundedSemaphore信號量vs標準互斥量
- 17. 互斥量和信號量之差= 1?
- 18. JAVA中的互斥量和信號量?
- 19. 測量互斥量或futex延遲
- 20. 使用互斥量作爲信號量?
- 21. 如何衡量互斥量爭用?
- 22. 爲什麼互斥體不需要互斥體(並且該互斥體需要互斥體...)
- 23. 使NSOperations互斥
- 24. 互斥理解
- 25. Posix Pthread互斥
- 26. 與互斥
- 27. 互斥對象
- 28. Java互斥
- 29. 互斥並行
- 30. 使用互斥
問題其實是另一回事,看似愚蠢。我沒有在一些構造函數中初始化一個bool變量,假設默認情況下它會被初始化爲false。 現在,如果你想知道我怎麼會困惑是否是由於互斥或錯誤初始化;好吧,如果你看了代碼,我想你會明白的。無論如何,謝謝你的答案。他們很有幫助。 – rabin 2009-12-13 23:34:58