首頁 > 後端開發 > C++ > 如何在.NET中實作執行緒安全的HashSet操作?

如何在.NET中實作執行緒安全的HashSet操作?

Mary-Kate Olsen
發布: 2025-01-09 07:14:48
原創
899 人瀏覽過

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

.NET 中的執行緒安全雜湊集替代品

本文探討了在 .NET 中管理 HashSet 集合的線程安全方法,提供了手動鎖定的替代方案。 您的範例在 HashSet 操作周圍使用自訂鎖定,這是一種有效但可能容易出錯的方法。 讓我們看看更好的選擇。

.NET 框架在 ConcurrentDictionary 命名空間中提供 System.Collections.Concurrent 類別作為卓越的解決方案。 ConcurrentDictionary 提供執行緒安全的雜湊表功能,有效處理並發讀寫。 使用方法如下:

<code class="language-csharp">private ConcurrentDictionary<string, byte[]> _data;</code>
登入後複製

或者,您可以建立自訂 ConcurrentHashSet 類別。這種方法涉及內部鎖定機制來保證線程安全。 下面提供了範例實作:

<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>
登入後複製

(注意:... 表示為簡潔起見,應在此處插入原始範例中的程式碼)。

與手動鎖定相比,使用 ConcurrentDictionary 或實作良好的 ConcurrentHashSet 可以顯著提高程式碼清晰度並降低同步錯誤的風險。 這些內建解決方案針對效能和線程安全性進行了最佳化。

以上是如何在.NET中實作執行緒安全的HashSet操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板