我的平臺是vs2010 win2003服務器,我的應用程序運行良好。有一個整數由臨界區保護,當我修改並使用boost :: detail :: spinlock代替時,它會進入死鎖。用boost :: detail :: spinlock替換關鍵部分在Windows上導致死鎖
-1
A
回答
2
這是
boost::detail::spinlock
。這意味着它僅供內部使用。如果您需要便攜式更換關鍵部分,請使用boost::mutex
from Boost.Thread。這是
boost::detail::spinlock
。螺旋鎖通常忙碌等待,這使得它們更快,但只有在嚴格控制的條件下才能使用。Boost 1.53(最新版本)終於得到Boost.Atomic,這是一種便攜式(和C++ 11兼容)互鎖操作的替代品。
+0
如果只是爲了內部使用,也許它是智能指針或其他人崩潰。我會嘗試最新的提升,謝謝。 – magicyang
+1
@magicyang:Boost經常在'details'子名稱空間中重新實現一些通用基礎設施,以保持組件獨立。但是這樣做會造成各種複雜的假設,這些假設對於升壓代碼來說是正確的,這使得這些位在您自己的代碼中無法使用。 –
相關問題
- 1. 只使用關鍵部分的讀/寫鎖會導致死鎖
- 2. 用SRW鎖代替關鍵部分
- 3. 顯式調用〜boost :: lock_guard <>導致互斥鎖死鎖
- 4. pthread_mutex_lock導致死鎖
- 5. AutoResetEvent.WaitOne()導致死鎖
- 6. Thread.Join()導致死鎖
- 7. 會導致死鎖?
- 8. 線程關閉導致的死鎖
- 9. 「DebugInfo for CritSec不會指向關鍵部分」當分析死鎖
- 10. Ruby:open會導致死鎖
- 11. MemoryStream.CopyTo()導致線程死鎖
- 12. 導致死鎖的SQLBulkCopy
- 13. 運行PIP導致死鎖
- 14. Python鎖定關鍵部分
- 15. 鎖(objectReference){}沒有鎖定關鍵部分
- 16. 可以使用sem_trywait()導致死鎖
- 17. 調用Runtime.getRuntime()。EXEC(...)導致死鎖
- 18. assetResourcesForAsset:導致死鎖在同一時間
- 19. 如何防止在windows phone中保存數據導致死鎖?
- 20. PSQL JDBC事務導致死鎖
- 21. Windows 10上PortMidi的死鎖
- 22. 如何在concurrent.futures.ThreadPoolExecutor中使用不會導致死鎖的鎖?
- 23. 硬件發生「死鎖」還是軟件導致死鎖?
- 24. 鎖定專用鎖對象導致死鎖
- 25. 在Windows DLL中使用boost :: asio :: deadline_timer時出現死鎖
- 26. JxBrowser導致線程死鎖120秒
- 27. Java MySQL可能導致死鎖?
- 28. 爲什麼睡眠(1000)導致死鎖?
- 29. 導致死鎖錯誤的SQL查詢
- 30. 如何成功導致死鎖
Soooo你試圖解決這個問題的是什麼? –
爲什麼需要改變時它運作良好?順便說一句,這是唯一的改變嗎? – Jagannath
@DenisErmolin我使用Interlockedxx api來暫時解決它,但真正的原因仍然沒有找到。 – magicyang