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
Mary-Kate Olsenasal
2025-01-09 07:14:48854semak imbas

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>

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>

(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!

Kenyataan:
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