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

  • androidandme

    androidandme

    10 Mart 2009
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012

İLGİLİ SORU / CEVAPLAR