为什么weak_ptr没有atomic_ {store,load}?

时间:2012-09-06 21:19:34

标签: c++ c++11 shared-ptr atomic smart-pointers

为什么C ++标准包含atomic_store的{​​{1}}或atomic_load重载,而不包括shared_ptr

这只是一种疏忽,还是没有为weak_ptr提供原子操作的实际原因?

2 个答案:

答案 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之后,就可以使用原子操作。