Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memastikan Keselamatan Benang dengan Pembina Statik C# dan Corak Singleton?
Keselamatan benang bagi pembina statik C#
Dalam C#, pembina statik dilaksanakan sekali sahaja bagi setiap domain aplikasi sebelum sebarang contoh kelas dibuat atau ahli statik diakses. Ini memastikan bahawa ia adalah selamat benang pada pembinaan awal, menghapuskan keperluan untuk mengunci dan ujian batal semasa penciptaan objek tunggal.
Walau bagaimanapun, penggunaan contoh seterusnya mungkin tidak segerak. Untuk menyelesaikan masalah ini, pertimbangkan untuk menambah mutex statik untuk menyegerakkan akses kepada contoh.
Berikut ialah contoh pelaksanaan singleton selamat benang yang termasuk kunci mutex:
<code class="language-c#">public class Singleton { private static Singleton instance; private static System.Threading.Mutex mutex = new System.Threading.Mutex(); // 初始化互斥锁 private Singleton() { } public static Singleton Instance { get { mutex.WaitOne(); try { if (instance == null) { instance = new Singleton(); } return instance; } finally { mutex.ReleaseMutex(); } } } }</code>
Pelaksanaan ini menggunakan atribut Instance
untuk menyegerakkan akses kepada contoh tunggal, memastikan operasi selamat benang untuk semua senario penggunaan seterusnya. Dengan menggunakan blok get
dalam aksesori try...finally
, anda memastikan bahawa mutex dilepaskan dengan betul walaupun pengecualian berlaku. Ini lebih bersih dan selamat daripada kaedah Acquire()
dan Release()
dalam contoh asal.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Keselamatan Benang dengan Pembina Statik C# dan Corak Singleton?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!