C++11 智能指针是线程安全的吗?

C++11 智能指针是线程安全的吗?,c++11,thread-safety,smart-pointers,C++11,Thread Safety,Smart Pointers,智能指针是一种抽象数据类型,它模拟指针,同时提供自动内存管理或边界检查等附加功能 我的问题是,它们是线程安全的吗?各种不同的智能指针对象提供不同程度的线程安全。您必须仔细检查各个实现的文档,以了解它提供的线程安全级别 最常见的问题是关于std::shared_ptr和std::weak_ptr。这些为单个指针实例提供了标准的线程安全性。也就是说,当另一个线程正在或可能正在修改完全相同的共享ptr或弱ptr对象时,一个线程不能访问共享ptr或弱ptr对象。但是,它们为引用同一对象的不同指针提供了完

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


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

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


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

我假设线程安全适用于不同的
共享的\u ptr
实例(如您所说),但不适用于所指向的对象at@LWimsey是的,就是这样。