자동 대기열 제거로 C# 고정 크기 대기열 생성
많은 애플리케이션에는 고정된 수의 항목을 보유하고 항목이 가득 차면 가장 오래된 항목을 제거하는 데이터 구조가 필요합니다. 이는 최근 이벤트를 추적하거나 기록을 유지하는 데 유용합니다. 마지막으로 방문한 100개의 URL을 저장해야 하는 웹 브라우저를 상상해 보십시오. ConcurrentQueue<T>
이 작동할 수는 있지만 대기열에서 제거를 수동으로 관리하는 것은 비효율적입니다. 사용자 정의 래퍼 클래스는 더욱 깔끔한 솔루션을 제공합니다.
FixedSizedQueue<T>
수업
이 클래스는 ConcurrentQueue<T>
을 래핑하여 대기열에 넣기와 대기열에서 빼기를 모두 처리하여 설정된 크기를 유지합니다. 클래스 정의에는 다음이 포함됩니다.
<code class="language-csharp">public class FixedSizedQueue<T> { private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); private readonly object lockObject = new object(); public int Limit { get; set; } // ... other methods }</code>
Enqueue
방법
Enqueue
메소드는 항목을 추가합니다. 대기열이 제한을 초과하면 오래된 항목이 제거됩니다.
<code class="language-csharp">public void Enqueue(T item) { queue.Enqueue(item); lock (lockObject) { T overflow; while (queue.Count > Limit && queue.TryDequeue(out overflow)) ; } }</code>
FixedSizedQueue<T>
클래스를 사용하려면 인스턴스를 만들고 제한을 설정하세요.
<code class="language-csharp">var urlHistory = new FixedSizedQueue<string> { Limit = 100 };</code>
항목을 추가하면 자동으로 크기가 유지됩니다.
<code class="language-csharp">urlHistory.Enqueue("www.google.com"); // Enqueues the URL urlHistory.Enqueue("www.microsoft.com"); // The oldest URL is automatically dequeued</code>
이 접근 방식은 C#에서 고정 크기 대기열을 관리하는 보다 우아하고 효율적인 방법을 제공합니다.
위 내용은 C#에서 자동 대기열 제거 기능을 사용하여 고정 크기 대기열을 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!