Thread'lenebilirlik

Global Veriler Kullanma

Global veri fonksiyonlar arasında istenmeyen yan etkilere neden olur ve kodun paralelleştirilmesini zorlaştırır veya imkansız kılar. Bugün kodun paralelleştirilmesi amaçlanmıyor olsa bile, gelecekte yapılmayacağı anlamına gelmez.

İstatistikler

Global verinin yanında, istatistikler her zaman beklediğin gibi oluşturulmaz ve yok edilmez. Bu çapraz-platform ortamlar için özellikle geçerlidir. Mesela bu g++ bug'ı dinamik modüllerden yüklenen paylaşımlı statik verinin yokedilme sırasından kaynaklanır.

Shared Pointer'lar

std::shared_ptr, "ne kadar globalse o kadar iyidir" (http://stackoverflow.com/a/18803611/29975) çünkü kodun pek çok bölümünün aynı veriye erişmesine izin verir.

Singleton'lar

Singleton sıklıkla bir static ve/veya shared_ptr ile implemente edilir.

Heap Operasyonlarından Kaçın

Heap operasyonları thread'lenmiş ortamlarda çok daha yavaştır. Çoğu durumda, veriyi kopyalamak daha hızlıdır.

Mutex ile mutable el ele gider (M&M kuralı, C++11)

Üye değişkenler için mutex ve mutable'ı beraber kullanmak iyi bir uygulamadır. Bu iki şekilde uygulanır:

  • Bir mutable üye değişkeninin shared (paylaşılmış) bir değişken olacağı varsayılır bu yüzden bir mutex ile senkronize edilmelidir (veya atomic yapılmalıdır)
  • eğer üye değişkenin kendisi bir mutex ise, mutable olmalıdır. Bu, o değişkeni const üye fonksiyon içinde kullanmak için gereklidir.

Daha fazla bilgi için Herb Sutter'ın makalesine bakınız: http://herbsutter.com/2013/05/24/gotw-6a-const-correctness-part-1-3/

const & dönüş değerleri hakkında ilgili güvenlik tartışması için.

results matching ""

    No results matching ""