这是一个由两部分组成的问题,所有关于 的原子性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,而是与之共存)并且它被否决了具体原因。