Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C 11 Menjamin Permulaan Selamat Benang bagi Pembolehubah Statik Setempat?

Bagaimanakah C 11 Menjamin Permulaan Selamat Benang bagi Pembolehubah Statik Setempat?

Barbara Streisand
Barbara Streisandasal
2024-12-24 12:11:15250semak imbas

How Does C  11 Guarantee Thread-Safe Initialization of Local Static Variables?

Permulaan Benang-Selamat Pembolehubah Statik Tempatan dalam C 11

Kebimbangan telah dibangkitkan mengenai pengamulaan selamat benang bagi pembolehubah statik tempatan dalam C dan evolusinya merentasi piawaian yang berbeza. Mari kita menangani perkara ini secara khusus dalam konteks C 11.

Piawaian C 11

Piawaian C 11 (bukan draf) dalam Bahagian 6.7 menyatakan bahawa:

  • Pembolehubah statik setempat dimulakan apabila kawalan kali pertama memasukinya pengisytiharan.
  • Pelaksanaan serentak memasuki perisytiharan semasa pembolehubah dimulakan mesti menunggu untuk penyiapan permulaan.
  • Pelaksanaan mestilah tidak menimbulkan kebuntuan semasa pelaksanaan pemula.

Oleh itu , dalam C 11, permulaan selamat benang bagi pembolehubah statik tempatan ialah dimuktamadkan.

Pelaksanaan Penyusun Popular

Penyusun utama, seperti:

  • gcc 4.7
  • vc 2011
  • dentang 3.0

telah melaksanakan dengan betul tingkah laku permulaan selamat benang yang diperlukan oleh standard C 11. Ini memastikan bahawa pembina pembolehubah statik tempatan seperti lg dalam contoh dijamin untuk dijalankan sekali sahaja, walaupun dalam persekitaran berbilang benang.

Pertimbangan Tambahan

Ia penting untuk ambil perhatian bahawa pemulaan selamat benang hanya terpakai pada permulaan pembolehubah itu sendiri. Akses seterusnya kepada pembolehubah melalui rujukan tidak dijamin selamat untuk benang melainkan mekanisme penyegerakan tambahan digunakan.

Atas ialah kandungan terperinci Bagaimanakah C 11 Menjamin Permulaan Selamat Benang bagi Pembolehubah Statik Setempat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn