[c#] ConcurrentQueue 클래스

System.Collections.Concurrent 네임스페이스에 있는 ConcurrentQueue 클래스는 동시성을 지원하는 스레드 안전한 큐를 제공합니다. 이 클래스를 사용하면 여러 스레드에서 동시에 요소를 추가하거나 제거할 수 있습니다.

ConcurrentQueue의 장점

ConcurrentQueue를 사용하면 여러 스레드가 동시에 큐에 접근할 때 발생할 수 있는 경쟁 조건을 피할 수 있습니다. 또한, Locking 없이 안전하게 동시성을 관리할 수 있기 때문에 성능이 향상될 수 있습니다.

예제

using System;
using System.Collections.Concurrent;
using System.Threading.Tasks;

class Program
{
    static ConcurrentQueue<int> queue = new ConcurrentQueue<int>();

    static void Main()
    {
        // 여러 스레드에서 ConcurrentQueue에 동시에 요소 추가
        Parallel.For(0, 10, i =>
        {
            queue.Enqueue(i);
            Console.WriteLine($"Enqueued: {i}");
        });

        // 여러 스레드에서 ConcurrentQueue에서 동시에 요소 제거
        Parallel.For(0, 10, i =>
        {
            if (queue.TryDequeue(out int result))
            {
                Console.WriteLine($"Dequeued: {result}");
            }
        });
    }
}

위 예제는 Parallel.For 메서드를 사용하여 여러 스레드에서 동시에 ConcurrentQueue에 요소를 추가하고 제거하는 간단한 예제를 보여줍니다.

ConcurrentQueue는 다른 메서드와 함께 동시성 문제를 해결하고 관리할 수 있는 다양한 기능을 제공합니다. 여러 스레드가 안전하게 큐에 액세스하고 수정할 수 있도록 도와줍니다.

참고 자료

ConcurrentQueue를 사용하면 동시성을 지원하는 안전한 큐를 쉽게 구현할 수 있으며, 애플리케이션의 성능을 향상시킬 수 있습니다.