>백엔드 개발 >C++ >C#에서 자동 대기열 제거를 사용하여 고정 크기 대기열을 구현하는 방법은 무엇입니까?

C#에서 자동 대기열 제거를 사용하여 고정 크기 대기열을 구현하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-13 08:50:47833검색

How to Implement a Fixed-Size Queue with Automatic Dequeuing in C#?

오래된 항목을 자동으로 제거하여 C#에서 고정 크기 대기열 생성

이 기사에서는 제한된 개체 기록을 유지하고 최대 크기에 도달하면 가장 오래된 항목을 자동으로 삭제하는 데이터 구조 생성에 대해 설명합니다. System.Collections 네임스페이스를 사용하여 이 대기열을 구축하겠습니다.

해결책:

이 솔루션은 FixedSizedQueue<T> 주위에 래퍼 클래스 ConcurrentQueue<T>를 사용합니다. 이 래퍼의 Enqueue 메서드는 대기열의 크기를 확인합니다. 대기열이 가득 찬 경우(Limit 속성으로 정의) 새 항목을 수용하기 위해 가장 오래된 항목이 Dequeue을 통해 제거됩니다.

FixedSizedQueue<T> 클래스에 대한 C# 코드는 다음과 같습니다.

<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; }

    public void Enqueue(T obj)
    {
        queue.Enqueue(obj);
        lock (lockObject)
        {
            T overflow;
            while (queue.Count > Limit && queue.TryDequeue(out overflow)) ;
        }
    }
}</code>

FixedSizedQueue<T>을 사용하면 용량 제한에 도달하면 오래된 항목이 자동으로 제거되어 고정 크기 기록이 보장됩니다.

위 내용은 C#에서 자동 대기열 제거를 사용하여 고정 크기 대기열을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.