擴充 ConcurrentQueue 以進行固定大小的歷史管理
System.Collections.Concurrent.ConcurrentQueue 是一個用於在多執行緒環境中管理佇列的強大工具。 然而,它本身並不支援固定大小的限制;當佇列已滿時,舊條目不會自動刪除。
介紹FixedSizedQueue解
為了克服這個限制,我們將建立一個 FixedSizedQueue
包裝類別。此類增強了 ConcurrentQueue
的功能,可以在新插入時自動將過時的元素出隊。
實施策略
FixedSizedQueue
封裝了一個私有的 ConcurrentQueue
實例和一個用於執行緒安全的鎖定物件。 Enqueue
方法檢查隊列的 Count
。如果超過預先定義的 Limit
,方法將會取得鎖,然後重複將元素出列,直到 Count
低於 Limit
。
實際應用
要使用FixedSizedQueue
,請使用所需的Limit
對其進行初始化:
<code class="language-csharp">FixedSizedQueue<string> urlQueue = new FixedSizedQueue<string>(100);</code>
新增網址(並自動刪除舊網址)非常簡單:
<code class="language-csharp">urlQueue.Enqueue("example.com");</code>
好處
FixedSizedQueue
提供了一種簡化且高效的方法來管理固定大小的歷史資料。它會優先考慮最新的條目,同時自動丟棄較舊的條目,非常適合儲存有限的場景或當追蹤特定數量的最近事件至關重要時。
以上是如何使用ConcurrentQueue實現固定大小的歷史隊列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!