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

Adakah Benang Pelaksanaan Singleton Meyers Selamat dalam C 11 dan C 03?

Patricia Arquette
Patricia Arquetteasal
2024-12-28 10:33:11207semak imbas

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

Keselamatan Benang Pelaksanaan Singleton Meyers

Dalam pelaksanaan Singleton Meyers yang disediakan dengan permulaan malas, kod tersebut selamat untuk benang dalam C 11. Menurut piawai C 11 (§6.7 [stmt.dcl] p4), jika berbilang benang cuba mengakses Singleton semasa pemulaan, urutan lain akan menunggu sehingga permulaan selesai.

GCC dan Visual Studio kedua-duanya menyokong ciri keselamatan benang ini (Permulaan Dinamik dan Pemusnahan dengan Concurrency), walaupun dengan tarikh pelaksanaan yang berbeza:

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

Sebaliknya, kod ini tidak selamat untuk benang dalam C 03. Artikel Meyers "C dan Bahaya Penguncian Disemak Dua Kali" menganalisis pelbagai pelaksanaan selamat benang bagi corak Singleton. Akhirnya, Meyers menyimpulkan bahawa (dalam C 03) menggunakan kunci penuh di sekeliling kaedah instantiasi ialah pendekatan yang paling mudah untuk memastikan keselarasan merentas platform yang berbeza. Sebaliknya, varian corak penguncian yang disemak dua kali mungkin memperkenalkan keadaan perlumbaan pada seni bina tertentu melainkan halangan memori diletakkan secara strategik antara arahan.

Atas ialah kandungan terperinci Adakah Benang Pelaksanaan Singleton Meyers Selamat dalam C 11 dan C 03?. 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