这是一个有关 std::shared_ptr
原子性的两部分问题:
1.
据我所知,std::shared_ptr
是 <memory>
中唯一的原子智能指针。我想知道是否有非原子版本的 std::shared_ptr
可用(我在 <memory>
中看不到任何东西,所以我也欢迎标准之外的建议,比如 Boost 中的建议)。我知道 boost::shared_ptr
也是原子的(如果没有定义 BOOST_SP_DISABLE_THREADS
的话) ,但是也许还有其他的选择?我正在寻找一些具有与 std::shared_ptr
相同的语义,但是没有原子性的东西。
2. I understand why std::shared_ptr
is atomic; it's kinda nice. However, it's not nice for every situation, and C++ has historically had the mantra of "only pay for what you use." If I'm not using multiple threads, or if I am using multiple threads but am not sharing pointer ownership across threads, an atomic smart pointer is overkill. My second question is 为什么在 C + + 11中没有提供非原子版本的 std::shared_ptr
? (assuming there is a 为什么) (if the answer is simply "a non-atomic version was simply never considered" or "no one ever asked for a non-atomic version" that's fine!).
关于问题2,我想知道是否有人曾经提出过一个非原子版本的 shared_ptr
(无论是对 Boost 还是标准委员会)(不是为了取代原子版本的 shared_ptr
,而是为了与之共存) ,但是因为某个特定的原因被否决了。