Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencapai Operasi HashSet Selamat Benang dalam .NET?

Bagaimana untuk Mencapai Operasi HashSet Selamat Benang dalam .NET?

Mary-Kate Olsen
Lepaskan: 2025-01-09 07:14:48
asal
898 orang telah melayarinya

How to Achieve Thread-Safe HashSet Operations in .NET?

Alternatif HashSet Selamat Benang dalam .NET

Artikel ini meneroka pendekatan selamat benang untuk mengurus HashSet koleksi dalam .NET, menawarkan alternatif kepada penguncian manual. Contoh anda menggunakan penguncian tersuai di sekitar operasi HashSet, kaedah yang sah tetapi berpotensi ralat. Mari kita periksa pilihan yang lebih baik.

Rangka kerja .NET menyediakan kelas ConcurrentDictionary dalam ruang nama System.Collections.Concurrent sebagai penyelesaian unggul. ConcurrentDictionary menawarkan fungsi jadual cincang selamat benang, mengendalikan bacaan dan tulis serentak dengan cekap. Begini cara menggunakannya:

<code class="language-csharp">private ConcurrentDictionary<string, byte[]> _data;</code>
Salin selepas log masuk

Sebagai alternatif, anda boleh membuat kelas ConcurrentHashSet tersuai. Pendekatan ini melibatkan mekanisme penguncian dalaman untuk menjamin keselamatan benang. Contoh pelaksanaan disediakan di bawah:

<code class="language-csharp">public class ConcurrentHashSet<T> : IDisposable
{
    private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
    private readonly HashSet<T> _hashSet = new HashSet<T>();

    public bool Add(T item) { ... } //Implementation as in original example
    public void Clear() { ... } //Implementation as in original example
    public bool Contains(T item) { ... } //Implementation as in original example
    public bool Remove(T item) { ... } //Implementation as in original example
    public int Count { ... } //Implementation as in original example
    public void Dispose() { ... } //Implementation as in original example
    protected virtual void Dispose(bool disposing) { ... } //Implementation as in original example
    ~ConcurrentHashSet() { ... } //Implementation as in original example
}</code>
Salin selepas log masuk

(Nota: ... menunjukkan kod daripada contoh asal perlu dimasukkan di sini untuk ringkas).

Menggunakan ConcurrentDictionary atau ConcurrentHashSet yang dilaksanakan dengan baik meningkatkan kejelasan kod dengan ketara dan mengurangkan risiko ralat penyegerakan berbanding penguncian manual. Penyelesaian terbina dalam ini dioptimumkan untuk prestasi dan keselamatan benang.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Operasi HashSet Selamat Benang dalam .NET?. 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