SORU
28 ŞUBAT 2013, PERŞEMBE


Orada std olmayan bir atom eşdeğerdir::shared_ptr? Ve neden değil' <bellek> bir t var mı?

Bu, iki aşamalı bir soru, std::shared_ptr atom oranı hakkında biraz

1. Söyleyebileceğim kadarıyla, std::shared_ptr atom <memory> yalnızca akıllı işaretçi. Merak ediyorum eğer orada olmayan bir atom sürümü std::shared_ptr kullanılabilir (hiçbir şey göremiyorum <memory>, o yüzden ben de açmak için öneriler dışında standart gibi bu Destek). boost::shared_ptr da atom olduğunu biliyorum BOOST_SP_DISABLE_THREADS tanımlı değil ise ... () ama belki başka bir alternatif var mı? std::shared_ptr, ama kararlılık olmadan aynı anlamı olan bir şeyler arıyorum.

2.std::shared_ptr atom; güzel olduğunu anlıyorum. Ancak, her durum için iyi değil, ve C, tarihsel olarak "sadece kullandığınız kadar ödersiniz." mantra olmuştur Eğer birden çok iş parçacığı kullanıyorum eğer birden çok iş parçacığı kullanarak, ya da değilim ama iş parçacığı üzerinde işaretçi sahipliğini paylaşım değilim, atom akıllı bir işaretçi abartılı olur. İkinci sorumneden std::shared_ptr non-atomik bir sürüm C 11 yetişmedi? (var sayıyorumnedeneğer cevap "olmayan bir atom sürümü sadece asla" ya da "hiç kimse olmayan bir atom sürümü" öyle olsun!) istedi. kabul edildi sadece (

Soru #2, merak ediyorum eğer hiç birini önerdi olmayan bir atom sürümü shared_ptr (Artırmak veya standartları Komitesi) (değiştir atom sürümü shared_ptr ama bir arada birlikte) ve vurulan için belirli bir sebep.

CEVAP
28 ŞUBAT 2013, PERŞEMBE


  1. Eğer std olmayan bir atom sürümü varsa merak ediyorum::shared_ptr kullanılabilir

Standart tarafından sağlanan değil. İyi bir "parti" kütüphane. 3 tarafından sağlanan olabilir Nitekim, C önce 11 ve artırmak için önce herkes kendi referans akıllı işaretçi sayılır (ben dahil) yazdığı gibi görünüyordu.

  1. İkinci sorum, neden std olmayan bir atom sürümü değildi::shared_ptr C 11 sağlanıyor mu?

Bu soruyu 2010 yılında Rapperswil toplantısında tartışıldı. Konu #20 İsviçre Ulusal Beden bir Yorum tarafından kullanılmaya başlandı. Sizin söz verdiğiniz olanlar da dahil olmak üzere tartışma her iki tarafında üzerinde ciddi bir tartışma yaşandı. Ancak tartışma sonunda oylama ezici bir çoğunlukla (ama oy birliğiyle değil) shared_ptr (non-atom) uyumsuz bir sürümünü ekleme karşıydı.

Dahil karşı argüman:

  • Kod uyumsuz olan shared_ptr ile yazılmış yolda dişli kod, sorunları hata ayıklama zor neden herhangi bir uyarı ile biten kullanılmakta sona erebilir.

  • Bir ""one way" başvuru trafik sayma faydaları vardır: the original proposal:." shared_ptr evrensel olması

    Aynı nesne türü ne olursa olsun kullanılan özelliklere sahip, büyük kütüphaneler arasında birlikte çalışabilirlik, üçüncü taraf dahil olmak üzere kolaylaştıran kütüphaneler.

  • Sıfır olmasa da Bayar maliyeti, ezici. Maliyet atomik işlemler kullanmak gerekmez taşı inşaat ve taşıma atama kullanımı ile hafifletilebilir. Bu tür operasyonlar genellikle vector<shared_ptr<T>> silmek ve eklemek için kullanılır.

  • Yok eğer bunlar gerçekten varsa non-atomik referans sayılır kendi akıllı işaretçi yazmaktan insanlar yasaklar.

Rapperswil o gün LWG son sözü şuydu:

CH 20 Reddet. Bu sefer bir değişiklik yapmak için bir uzlaşma.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ArkticPlanet

    ArkticPlanet

    9 ŞUBAT 2010
  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014