Это немного вопрос из двух частей, касающийся атомарности 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
является атомарным; это любопытно. Тем не менее, это не приятно для каждой ситуации, и на С++ исторически была мантра "только платить за то, что вы используете". Если я не использую несколько потоков, или если я использую несколько потоков, но я не разделяю права собственности на указатели на потоки, атомный умный указатель переполнен. Мой второй вопрос: почему не была неатомная версия std::shared_ptr
, предоставленная в С++ 11? (при условии, что есть почему) (если ответ просто "неатомная версия просто никогда не рассматривалась" или "никто никогда не просил неатомную версию", это прекрасно!).
С вопросом № 2 мне интересно, предложил ли кто-нибудь неатомическую версию shared_ptr
(либо в Boost, либо в комитете по стандартизации) (не для замены атомной версии shared_ptr
, а для сосуществования с он), и он был сбит по определенной причине.