首頁  >  文章  >  後端開發  >  為什麼 C 標準函式庫不提供 `std::shared_ptr` 的非原子版?

為什麼 C 標準函式庫不提供 `std::shared_ptr` 的非原子版?

Patricia Arquette
Patricia Arquette原創
2024-10-27 00:03:02247瀏覽

Why Doesn't C  's Standard Library Offer a Non-Atomic Version of `std::shared_ptr`?

std::shared_ptr 的非原子等價物

問題:

問題:

有嗎:shared_ptr 的替代品缺乏其固有的原子性?此外,為什麼 C 標準函式庫不包含非原子選項?

答:

1。非原子替代方案的可用性:

C 標準庫不提供 std::shared_ptr 的非原子變體。但是,第三方庫可能會提供此類實作。在 C 11 中引入 std::shared_ptr 之前,許多開發人員創建了自己的引用計數智慧指針,可能提供非原子選項。

2. C 11 中原子std::shared_ptr 的基本原理:
  • 在C 11 標準化過程中,考慮並最終拒絕了包含std::shared_ptr 非原子版本的提案。以下論點影響了這個決定:
  • 潛在的誤用:用線程程式碼編寫的非原子智慧指標可能會引入微妙且難以調試的錯誤。
  • 一致性和互通性:擁有單一、一致版本的 std::shared_ptr 有助於庫的互通性並減少混亂。
  • 低性能成本:原子操作具有非- 零開銷,但透過使用移動語義可以減輕開銷,移動語義避免了向量擦除和插入等常見操作期間的原子操作。

自訂實作:開發人員可以建立自己的非-原子智慧指針,如果他們願意的話。

建議的非原子版本:儘管在C 11 中被拒絕,但可能有人提出了非原子版本的建議std::shared_ptr 的原子版本已提交給Boost 或標準委員會。然而,這些提案並沒有獲得足夠的支持來納入官方標準。

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

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