为什么 C++ 标准包含atomic_storeoratomic_load重载 for shared_ptr,但不包含weak_ptr?
这只是一个疏忽,还是有实际原因不提供原子操作weak_ptr?
为什么 C++ 标准包含atomic_storeoratomic_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_ptrusing lock()。一旦你有了它,shared_ptr你就可以使用原子操作。