8

为什么 C++ 标准包含atomic_storeoratomic_load重载 for shared_ptr,但不包含weak_ptr

这只是一个疏忽,还是有实际原因不提供原子操作weak_ptr

4

2 回答 2

3

这似乎是一个疏忽。Herb Sutter 有一个针对 atomic_shared_ptr/atomic_unique_ptr/atomic_weak_ptr 的 C++(17?) 标准设计提案,该文档还解释了现有方法的缺点,其中包含用于 shared_ptr 的免费函数 atomic_load/atomic_store:http://www.open-std。 org/jtc1/sc22/wg21/docs/papers/2014/n4162.pdf

于 2014-12-09T17:40:50.800 回答
1

大概答案是因为,为了使用 a weak_ptr,您首先将其转换为shared_ptrusing lock()。一旦你有了它,shared_ptr你就可以使用原子操作。

于 2012-09-06T21:21:25.917 回答