Есть ли неатомарный эквивалент std :: shared_ptr? И почему нет такого в <memory>?
Это вопрос из двух частей, все об атомарности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 ++ исторически имел мантру «плати только за то, что используешь». Если я не использую несколько потоков, или если я использую несколько потоков, но не разделяю владение указателем между потоками, атомарный интеллектуальный указатель является излишним. Мой второй вопроспочему не была неатомарная версияstd::shared_ptr
предоставляется в C ++ 11? (при условии, что естьПочему) (если ответ просто «неатомарная версия просто никогда не рассматривалась» или «никто никогда не просил неатомарную версию», это нормально!).
Что касается вопроса № 2, мне интересно, предлагал ли кто-нибудь неатомарную версиюshared_ptr
(либо повысить, либо комитет по стандартам) (не заменять атомарную версиюshared_ptr
, но чтобы сосуществовать с ним) и его сбили по определенной причине.