为什么 C++ 标准包含atomic_store
oratomic_load
重载 for shared_ptr
,但不包含weak_ptr
?
这只是一个疏忽,还是有实际原因不提供原子操作weak_ptr
?
为什么 C++ 标准包含atomic_store
oratomic_load
重载 for shared_ptr
,但不包含weak_ptr
?
这只是一个疏忽,还是有实际原因不提供原子操作weak_ptr
?
这似乎是一个疏忽。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
大概答案是因为,为了使用 a weak_ptr
,您首先将其转换为shared_ptr
using lock()
。一旦你有了它,shared_ptr
你就可以使用原子操作。