std::shared_ptr 提供多少线程安全性?
std::shared_ptr 是一个智能指针,提供引用计数和自动内存管理。虽然它确保独立于平台的线程安全引用计数,但其线程安全的某些方面需要澄清。
核心线程安全保证:
线程安全的限制:
示例演示:
考虑以下伪代码:
// Thread I shared_ptr<A> a (new A (1)); // Thread II shared_ptr<A> b (a); // Thread III shared_ptr<A> c (a); // Thread IV shared_ptr<A> d (a); d.reset (new A (10));
假设在线程 IV 中调用 reset() 之后,其他线程将只看到新对象是不正确的。线程 II、III、IV 仍然会指向原来的对象,只有线程 IV 会指向新对象。
结论:
std::shared_ptr为引用计数和销毁提供强大的线程安全保证。然而,重要的是要记住,存储对象的线程安全性是无法保证的,必须单独考虑。
以上是std::shared_ptr 真的是线程安全的吗?的详细内容。更多信息请关注PHP中文网其他相关文章!