智能指针线程安全吗?

时间:2017-01-18 03:14:54

标签: c++11 thread-safety smart-pointers

智能指针是一种抽象数据类型,它模拟指针,同时提供自动内存管理或边界检查等附加功能。

我的问题是,它们是否是线程安全的?

1 个答案:

答案 0 :(得分:3)

各种不同的智能指针对象提供各种不同程度的线程安全性。您必须仔细检查单个实现的文档,以了解它提供的线程安全级别。

最常见的问题是std::shared_ptrstd::weak_ptr。这些为单个指针实例提供标准线程安全性。也就是说,一个线程不能访问shared_ptrweak_ptr而另一个线程正在或可能正在修改完全相同的shared_ptrweak_ptr对象。但是,它们为引用同一对象的不同指针提供完整的线程安全性。因此,一个线程可以修改shared_ptr,而另一个线程正在访问shared_ptr到同一个底层对象,其生命周期由智能指针管理。