/Zc:threadSafeInit (İş Parçacığı Güvenli Yerel Statik Başlatma)

/Zc:threadSafeInit derleyici seçeneği, derleyiciye statik yerel (işlev kapsamı) değişkenlerini iş parçacığı güvenli bir şekilde başlatmasını söyler ve el ile eşitleme gereksinimini ortadan kaldırır. Yalnızca başlatma iş parçacığı güvenlidir. Statik yerel değişkenlerin birden çok iş parçacığı tarafından kullanılması ve değiştirilmesi yine de el ile eşitlenmelidir. Bu seçenek Visual Studio 2015'den itibaren kullanılabilir. Varsayılan olarak, Visual Studio bu seçeneği etkinleştirir.

Sözdizimi

/Zc:threadSafeInit[-]

Açıklamalar

C++11 standardında, statik veya iş parçacığı depolama süresine sahip blok kapsamı değişkenleri, başka bir başlatma gerçekleşmeden önce sıfırdan başlatılmalıdır. Başlatma, denetim değişkenin bildiriminden ilk geçtiğinde gerçekleşir. Başlatma sırasında bir özel durum oluşursa, değişken başlatılmamış olarak kabul edilir ve denetim bildirimden bir sonraki geçtiğinde başlatma yeniden denenür. Denetim başlatmayla birlikte bildirimi eşzamanlı olarak girerse başlatma işlemi tamamlanırken eşzamanlı yürütme blokları oluşur. Denetim başlatma sırasında bildirimi özyinelemeli olarak yeniden girerse davranış tanımlanmamış olur. Varsayılan olarak, Visual Studio 2015'te başlayan Visual Studio bu standart davranışı uygular. Bu davranış, /Zc:threadSafeInit derleyici seçeneği ayarlanarak açıkça belirtilebilir.

/Zc:threadSafeInit derleyici seçeneği varsayılan olarak açıktır. /permissive- seçeneği /Zc:threadSafeInit'i etkilemez.

Statik yerel değişkenlerin iş parçacığı güvenli şekilde başlatılması, Evrensel C çalışma zamanı kitaplığında (UCRT) uygulanan koda dayanır. UCRT'ye bağımlılık almaktan kaçınmak veya Visual Studio 2015 öncesi Visual Studio sürümlerinin iş parçacığı güvenli olmayan başlatma davranışını korumak için /Zc:threadSafeInit- seçeneğini kullanın. İş parçacığı güvenliğinin gerekli olmadığını biliyorsanız, statik yerel bildirimler etrafında biraz daha küçük ve daha hızlı kod oluşturmak için bu seçeneği kullanın.

İş parçacığı güvenli statik yerel değişkenler, statik zaten başlatıldığında verimli yürütme sağlamak için dahili olarak iş parçacığı yerel depolama (TLS) kullanır. Bu özelliğin uygulanması, Windows Vista ve sonraki işletim sistemlerindeki Windows işletim sistemi destek işlevlerine dayanır. Windows XP, Windows Server 2003 ve eski işletim sistemleri bu desteğe sahip olmadığından verimlilik avantajını elde etmemektedir. Bu işletim sistemlerinin yüklenebilen TLS bölümlerinin sayısında da daha düşük bir sınırı vardır. TLS bölüm sınırını aşmak kilitlenmeye neden olabilir. Bu, özellikle eski işletim sistemlerinde çalışması gereken kodda, kodunuzdaki bir sorunsa, iş parçacığı güvenli başlatma kodunu devre dışı bırakmak için /Zc:threadSafeInit- kullanın.

Visual C++'daki uyumluluk sorunları hakkında daha fazla bilgi için bkz . Standart Dışı Davranış.

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırmalar açılan menüsünden Tüm Yapılandırmalar'ı seçin.

  3. Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.

  4. Ek Seçenekler özelliğini /Zc:threadSafeInit veya /Zc:threadSafeInit- içerecek şekilde değiştirin ve tamam'ı seçin.

Ayrıca bkz.

MSVC Derleyicisi Seçenekleri
MSVC Derleyicisi Komut Satırı Söz Dizimi
/Zc (Uyumluluk)