首頁  >  文章  >  後端開發  >  為什麼 C 沒有非原子 `std::shared_ptr`?

為什麼 C 沒有非原子 `std::shared_ptr`?

Linda Hamilton
Linda Hamilton原創
2024-11-01 01:21:02785瀏覽

 Why Doesn't C   Have a Non-Atomic `std::shared_ptr`?

std::shared_ptr 的非原子等價物以及為什麼它在

std::shared_ptr 已獲得地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位原子遞增和突出地位。遞減共享所有權智慧指標。然而,問題是是否存在非原子等價物。

1。非原子替代選項

儘管對進行了廣泛的檢查,但標頭,沒有可以輕鬆訪問 std::shared_ptr 的非原子等效項。然而,也有一些超出標準的解決方案。

2.為什麼 C 11 中不包含非原子 std::shared_ptr

C 11 中缺少非原子版本源自於 2010 年 Rapperswil 會議期間進行的討論。

反對非原子選項的原因:

  • 未原子性編寫的程式碼稍後與執行緒一起使用時可能會出現問題,從而導致除錯挑戰。
  • 優點具有跨庫行為一致的通用shared_ptr。
  • 原子性對表現的影響最小,可以透過高效率的移動構造和移動分配操作來緩解。
  • 自訂非原子共享的可用性如果需要,可以使用指標。

基於這些論點,語言工作小組 (LWG) 決定不在 C 11 中引入 share_ptr 的非原子變體。

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

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