为什么C ++标准包含atomic_store
的{{1}}或atomic_load
重载,而不包括shared_ptr
?
这只是一种疏忽,还是没有为weak_ptr
提供原子操作的实际原因?
答案 0 :(得分:2)
这似乎是一种疏忽。 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
答案 1 :(得分:1)
据推测,答案是因为,为了使用weak_ptr
,您首先要使用shared_ptr
将其转换为lock()
。获得shared_ptr
之后,就可以使用原子操作。