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

  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013
  • schmittastic

    schmittastic

    9 EYLÜL 2009

İLGİLİ SORU / CEVAPLAR