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