2017-01-18 60 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