Rumah >pembangunan bahagian belakang >C++ >Adakah Benang Pelaksanaan Singleton Meyers Selamat dalam C 11 dan 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:
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!