Bu biraz iki bölümden oluşan bir sorudur, tümü aşağıdakilerin atomikliği ile ilgilidir std::shared_ptr
:
1.
Söyleyebileceğim kadarıyla atomik std::shared_ptr
olan tek akıllı işaretçi <memory>
. std::shared_ptr
Kullanılabilirin atomik olmayan bir sürümü olup olmadığını merak ediyorum (içinde hiçbir şey göremiyorum <memory>
, bu yüzden Boost'takiler gibi standart dışındaki önerilere de açığım). boost::shared_ptr
Atomik olduğunu da biliyorum ( BOOST_SP_DISABLE_THREADS
tanımlanmamışsa), ama belki başka bir alternatif var mı? std::shared_ptr
Atomiklik içermeyen ama aynı semantiğe sahip bir şey arıyorum .
2. Neden std::shared_ptr
atomik olduğunu anlıyorum ; bu çok hoş. Ancak, bu her durum için hoş değildir ve C ++ tarihsel olarak "yalnızca kullandığınız kadar ödeyin" mantrasına sahip olmuştur. Birden fazla iş parçacığı kullanmıyorsam veya birden çok iş parçacığı kullanıyorsam ancak işaretçi sahipliğini iş parçacıkları arasında paylaşmıyorsam, atomik bir akıllı işaretçi aşırı derecede önemlidir. İkinci sorum, C ++ 11'de neden atomik olmayan bir sürüm std::shared_ptr
sağlanmadı ? (bir neden olduğunu varsayarak ) (cevap basitçe "atomik olmayan bir versiyon asla düşünülmedi" veya "hiç kimse atomik olmayan bir versiyon istemedi" ise sorun değil!).
2 numaralı soruyla, birinin atomik olmayan bir versiyonunu önerip shared_ptr
(Boost'a veya standartlar komitesine) (atomik versiyonunun yerini almak için değil shared_ptr
, onunla birlikte var olmak için) önerip önermediğini merak ediyorum. özel sebep.