SORU
12 Kasım 2011, CUMARTESİ


Yerel bir statik değişken evresel C 11'de başlatma mı?

Bu sık sık sorulan bir soru olduğunu biliyorum, ama bu kadar çok çeşidi olduğu gibi, yeniden bir devlet gibi, ve umarım bir cevap mevcut durumu yansıtan ederdim. Gibi bir şey

Logger& g_logger() {
    static Logger lg;
    return lg;
}

Değişken lg kurucu sadece bir kez çalıştırmak için garanti edilir?

C 03, önceki yanıtları biliyorum; C 0x taslak, bu uygulanır. Ama daha net bir cevap istiyorum

  1. C 11 standart (taslak), iş parçacığı için güvenli başlatma davranış kesinleşmiş olabilir?
  2. Yukarıda Evet, popüler uygulamaları mevcut en son sürümlerine ise, yani 4.7, 2011 vc gcc ve 3.0, çınlama onlar düzgün bir şekilde uygulandığı?

CEVAP
12 Kasım 2011, CUMARTESİ


İlgili bölüm 6.7:

böyle bir değişken kontrol bildirgesinde geçer ilk sefer başlatıldı; böyle bir değişken başlatma tamamlandığında başlatılmış olarak kabul edilir. Eğer kontrol değişkeni başlatılırken Bildirgesi aynı anda girerse [...] eşzamanlı yürütme başlatma tamamlanması için beklemek zorundadır.

Sonra bir dipnot var:

Uygulama başlatıcı yürütme etrafında herhangi bir kilitlenme tanıtmak gerekir.

Yani Evet, güvendesin.

(Bu referans ile değişken bir sonraki erişim hakkında tabii ki hiçbir şey söylemez.)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008

İLGİLİ SORU / CEVAPLAR