Rumah >pembangunan bahagian belakang >C++ >Adakah Pembina Statik C# Mencukupi untuk Pelaksanaan Singleton Selamat Benang?
Keselamatan benang bagi pembina statik C# dalam mod tunggal
Corak tunggal ialah corak reka bentuk biasa dalam pembangunan perisian, memastikan bahawa kelas hanya mempunyai satu tika dalam domain aplikasi. Dalam C#, pembina statik bertanggungjawab untuk memulakan ahli statik kelas, termasuk contoh dalam pelaksanaan tunggal.
Soalan:
Adakah benang pelaksanaan tunggal C# berikut selamat?
<code class="language-C#">public class Singleton { private static Singleton instance; private Singleton() { } static Singleton() { instance = new Singleton(); } public static Singleton Instance { get { return instance; } } }</code>
Jawapan:
Ya, pembina statik dalam pelaksanaan ini menjamin keselamatan benang semasa pembinaan awal tika tunggal. Menurut dokumentasi Microsoft, pembina statik dalam C# dijamin untuk dijalankan sekali sahaja dalam setiap domain aplikasi sebelum sebarang contoh kelas dibuat atau ahli statik diakses.
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa keselamatan rangkaian ini hanya terpakai pada pembinaan awal kejadian. Ia tidak menjamin bahawa penggunaan contoh seterusnya akan disegerakkan. Untuk memastikan keselamatan benang yang lengkap, mekanisme penyegerakan tambahan diperlukan.
Salah satu cara untuk mencapai penyegerakan benang adalah dengan memperkenalkan mutex statik untuk mengawal akses kepada contoh tunggal:
<code class="language-C#">public class Singleton { private static Singleton instance; private static System.Threading.Mutex mutex; private Singleton() { } static Singleton() { instance = new Singleton(); mutex = new System.Threading.Mutex(); } public static Singleton Acquire() { mutex.WaitOne(); return instance; } public static void Release() { mutex.ReleaseMutex(); } }</code>
Pelaksanaan ini memerlukan setiap panggilan ke Acquire() digandingkan dengan panggilan ke Release(), memastikan hanya satu urutan boleh mengakses tika tunggal pada satu masa. Dengan mengambil pendekatan ini, keselamatan benang dicapai bukan sahaja semasa pembinaan awal, tetapi juga semasa penggunaan contoh berikutnya.
Atas ialah kandungan terperinci Adakah Pembina Statik C# Mencukupi untuk Pelaksanaan Singleton Selamat Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!