这是一个由两部分组成的问题,所有关于 的原子性std::shared_ptr
:
1.
据我所知,std::shared_ptr
它是唯一的智能指针,<memory>
它是原子的。我想知道是否有可用的非原子版本std::shared_ptr
(我在 中看不到任何东西<memory>
,所以我也愿意接受标准之外的建议,比如 Boost 中的建议)。我知道boost::shared_ptr
也是原子的(如果BOOST_SP_DISABLE_THREADS
没有定义),但也许还有另一种选择?我正在寻找与 具有相同语义std::shared_ptr
但没有原子性的东西。
2.我明白为什么std::shared_ptr
是原子的;这有点好。然而,它并不适用于所有情况,C++ 历来有“只为你使用的东西付费”的口头禅。如果我没有使用多个线程,或者如果我使用多个线程但没有跨线程共享指针所有权,那么原子智能指针就过分了。我的第二个问题是为什么C++11中没有提供非原子版本std::shared_ptr
?(假设有一个原因)(如果答案只是“根本没有考虑过非原子版本”或“从来没有人要求过非原子版本”,那很好!)。
对于问题 #2,我想知道是否有人曾经提出过shared_ptr
(对于 Boost 或标准委员会)的非原子版本(不是要替换 的原子版本shared_ptr
,而是与之共存)并且它被否决了具体原因。