簡體   English   中英

如何對 std::shared_ptr std::unique_ptr 進行面向未來的線程安全並發訪問

[英]How to futureproof thread-safe concurrent access to std::shared_ptr std::unique_ptr

隨着 C++ 語言規范在該領域的發展,對於並發訪問std::shared_ptr (-like)和std::unique_ptr (-like)數據結構的當前 C++ 編碼的未來證明有哪些推薦的策略?

背景:

大約 2021 年,用於管理對std::shared_ptr (-like)和std::unique_ptr (-like)智能指針的訪問的可用 C++ 語言結構不斷變化。 例如,C++20 對std::atomic<std::shared_ptr>還沒有深入到編譯器中,但 C++20 規范告訴我們它即將到來。

我從事非平凡的多線程開發,需要能夠通過(希望無鎖)隊列在線程之間傳遞智能指針(共享和唯一),並以各種線程安全的方式使用它們。 我想以一種方式開發此代碼,使其在可用時可以輕松升級到現代語言功能。 理想的情況是能夠從中心位置輕松進行此升級,例如如果更改 CPP 宏的定義並根據這些宏進行編碼就是這種情況。

有沒有人知道一個很好的策略(也許是一組好的 CPP 宏?)用於面向未來的當前並發代碼?

我從事非平凡的多線程開發,需要能夠通過(希望無鎖)隊列在線程之間傳遞智能指針(共享和唯一),並以各種線程安全的方式使用它們。

使用(無鎖)隊列時,您不會同時訪問生產元素和消費元素。

對於訪問不同的變量unique_ptrshared_ptr已經是安全的。 當兩個shared_ptr指向同一個對象時,可以保證在不同線程中操作這些shared_ptr是線程安全的,通常使用引用計數來實現。 不同的unique_ptr不指向同一個對象。

如果您只是將它們放入隊列中並且沒有真正同時從多個線程訪問相同的變量,則只需像往常一樣使用shared_ptrunique_ptr

暫無
暫無

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

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