首頁  >  文章  >  後端開發  >  為什麼 C 標準不包含非原子 `std::shared_ptr`?

為什麼 C 標準不包含非原子 `std::shared_ptr`?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-30 02:03:28783瀏覽

Why Doesn't the C   Standard Include a Non-Atomic `std::shared_ptr`?

非原子智慧指標:探索C 標準中的缺失

在C 記憶體管理領域,std::shared_ptr由於其原子操作,它是一種特殊的智慧指針。這就提出了一個問題:為什麼標準記憶體庫中沒有非原子對應項?

1。 std::shared_ptr 的非原子替代品

雖然 std::shared_ptr 提供原子行為,但某些場景可能不需要這樣的開銷。為了解決這個問題,出現了外部函式庫,提供非原子引用計數智慧指標。然而,標準記憶體庫本身缺乏這樣的功能。

2. C 11 中的缺席:原因和爭論

儘管被認為有用,但在C 11 標準化過程中,關於std::shared_ptr 非原子版本的提議被拒絕了。有幾個論點促成了這個決定:

  • 潛在的誤用:非原子智慧指標可能會無意中在多執行緒上下文中使用,導致難以調試的錯誤。
  • 一致性和互通性:維護具有原子功能的單一「通用」shared_ptr,可以實現 C 函式庫(包括第三方函式庫)之間更順暢的互通性。
  • 效能注意事項: 雖然原子操作會產生效能成本,但它們的成本並不是過高,特別是在使用移動構造和移動分配時。
  • 自訂選項:如果程式設計師需要非原子行為,他們不會被阻止創建自己的自訂引用計數智慧指標實作。

結論

中缺少非原子std::shared_ptr C 標準是基於對潛在誤用、一致性、性能和定制靈活性的擔憂而深思熟慮的決定的結果。雖然外部函式庫可以提供此類替代方案,但標準本身優先考慮了用於記憶體管理的通用原子智慧指標的好處。

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

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