首頁 >後端開發 >C++ >為什麼 C 標準函式庫中沒有 std::shared_ptr 的非原子等效項?

為什麼 C 標準函式庫中沒有 std::shared_ptr 的非原子等效項?

Susan Sarandon
Susan Sarandon原創
2024-11-03 03:06:29815瀏覽

Why is there no non-atomic equivalent of std::shared_ptr in the C   standard library?

檢查std::shared_ptr 的非原子等效項

簡介

簡介

簡介

尋找非原子替代方案

與問題的前提相反,std::shared_ptr 並不是 中唯一的智慧指標。以具有原子性。 std::weak_ptr 也是原子的,為需要非擁有引用的場景提供了一個潛在的解決方案。然而,對專用非原子共享指標替代方案的興趣表明庫中存在明顯的差距。

    排除的原因
  • 儘管非原子的潛在好處原子shared_ptr,C標準委員會選擇不在C 11中包含一個。該決定源自於2010年Rapperswil會議上的激烈辯論。反對將其包含在內的論點包括:
  • 未來線程使用的潛力:
  • 非原子共享指針可能會無意中用於多線程上下文,從而導致微妙且難以檢測的錯誤。
  • 智慧指標設計的一致性:
  • 統一的shared_ptr在所有用例中統一處理引用計數,簡化了互通性和函式庫的使用。
  • 最小的效能成本:
  • shared_ptr 中的原子操作並不是非常昂貴,特別是考慮到繞過原子操作的移動操作。

使用者選擇:開發人員可以自由創建自己的非原子引用計數智慧如果需要,可以使用指標。

結論C 11 標準中缺少 std::shared_ptr 的非原子等效項是多方面的。雖然它損害了「按使用量付費」的原則,但它優先考慮一致性、避免錯誤和最小的效能開銷。該決定反映了提供最佳靈活性和確保程式碼穩健性之間的折衷。

以上是為什麼 C 標準函式庫中沒有 std::shared_ptr 的非原子等效項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn