Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memastikan Keselamatan Benang dengan Pembina Statik C# dan Corak Singleton?

Bagaimana untuk Memastikan Keselamatan Benang dengan Pembina Statik C# dan Corak Singleton?

Mary-Kate Olsen
Lepaskan: 2025-01-16 11:52:58
asal
932 orang telah melayarinya

How to Ensure Thread Safety with C# Static Constructors and Singleton Pattern?

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>
Salin selepas log masuk

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!

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