Rumah > pembangunan bahagian belakang > C++ > Adakah Benang Pelaksanaan Singleton Meyers Selamat dalam C 11?

Adakah Benang Pelaksanaan Singleton Meyers Selamat dalam C 11?

Mary-Kate Olsen
Lepaskan: 2024-12-21 07:26:10
asal
449 orang telah melayarinya

Is Meyers' Singleton Implementation Thread-Safe in C  11?

Adakah Meyers' Singleton Design Thread-Safe?

Pelaksanaan yang dibentangkan bagi corak Singleton Meyers, menggunakan pemulaan malas, menimbulkan persoalan tentang keselamatan benang. Berikut ialah analisis mengapa kod ini selamat untuk benang dalam C 11 dan cara ia mencapai keselamatan benang.

Keselamatan Benang dalam C 11

Mengikut standard C 11 , §6.7 [stmt.dcl] p4:

If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
Salin selepas log masuk

Ini membayangkan bahawa dalam C 11, pelaksanaan di atas menjadi selamat untuk benang. Piawaian memerlukan pelaksanaan utas menunggu untuk penyiapan permulaan sebelum mengakses pembolehubah, memastikan keselamatan utas.

Sokongan dalam Penyusun

Penyusun berikut menyediakan sokongan untuk Permulaan Dinamik dan Pemusnahan dengan Concurrency, yang membolehkan ciri ini:

  • Visual Studio: Disokong sejak Visual Studio 2015
  • GCC: Disokong sejak GCC 4.3

Nota untuk C 03

Dalam C 03, kod tidak selamat untuk benang. Meyers dalam artikelnya, "C and the Perils of Double-Checked Locking," mencadangkan bahawa dalam C 03, penguncian penuh di sekeliling kaedah instantiating ialah cara paling mudah untuk memastikan keselamatan benang merentas platform.

Atas ialah kandungan terperinci Adakah Benang Pelaksanaan Singleton Meyers Selamat dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan