簡體   English   中英

C ++單例實現,雙重檢查鎖定

[英]C++ singleton implementation, double-checked locking

我聽到並閱讀了很多有關C ++中的單例實現方法的信息,例如Meyer,Phoenix等,但是在某些使用情況下,它們似乎都存在問題。 因此,我想出了自己的實現方法Daniel Singleton 我想知道的是,是否正確……我認為是正確的,但是請告訴我它是否有我沒有想到的缺陷!

另外,我嘗試通過使用雙重檢查鎖定來使它始終保持線程安全,而不必一直獲取鎖定,對此我也有很多了解,每個人都說它已損壞。 我也嘗試修復此問題,我想知道我的解決方案是否正確...如果不正確,那么它怎么會失敗?

單例模式本身就被破壞了,因為它造成了可怕的代碼。 使用依賴注入/控制反轉確實好得多。 請參閱我關於避免單例的頁面

您的單例課程不必要地復雜。 看起來您正在實現惰性單例模式,並且仍在獲取鎖,因此-除了使事情不必要地復雜化之外-我不確定您的操作與更簡單的惰性單例實現有何不同。 您是否已對實現進行基准測試,以確定它是否比簡單的替代方案更快? 我希望看到更復雜的東西能獲得明顯的性能勝利。

雙重檢查的鎖定模式類似於ascii和IEE754浮點。 可以肯定地說,即使沒有正式的保證,它也可以在您將看到的每個系統上運行良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM