2017-01-18 97 views
0

智能指針是一種抽象數據類型,可以在提供附加功能(如自動內存管理或邊界檢查)的同時模擬指針。智能指針線程安全嗎?

我的問題是,它們是線程安全的嗎?

回答

3

各種不同的智能指針對象提供各種不同程度的線程安全性。您必須仔細檢查個別實施的文檔以查看它提供的線程安全級別。

最常見的問題是關於std::shared_ptrstd::weak_ptr。這些爲單個指針實例提供標準線程安全。也就是說,一個線程不能訪問shared_ptrweak_ptr,而另一個線程正在或可能正在修改完全相同的shared_ptrweak_ptr對象。但是,它們爲引用同一對象的不同指針提供完全線程安全性。因此,一個線程可以修改一個shared_ptr,而另一個線程正在訪問一個shared_ptr到同一個其生命週期由智能指針管理的基礎對象。

+0

我想線程安全適用於不同的'shared_ptr'實例(如您所說),但不適用於指向 – LWimsey

+0

@LWimsey的對象,情況就是這樣。 – Yakk