[c#] ConcurrentBag 클래스

ConcurrentBag이란 무엇인가?

ConcurrentBag 클래스는 여러 스레드에서 안전하게 아이템을 추가, 제거 및 반복할 수 있는 가변 크기의 컬렉션입니다. 이 클래스는 스레드 간에 자동으로 동기화됩니다. 따라서 별도의 동기화 메커니즘이 필요하지 않습니다.

ConcurrentBag 사용하기

ConcurrentBag 클래스는 다음과 같이 사용될 수 있습니다.

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

class Program
{
    static void Main()
    {
        ConcurrentBag<int> bag = new ConcurrentBag<int>();

        Parallel.For(0, 10, i =>
        {
            bag.Add(i); // 여러 스레드에서 안전하게 아이템을 추가
        });

        foreach (var item in bag)
        {
            Console.WriteLine(item); // 여러 스레드에서 안전하게 반복
        }
    }
}

위의 예제에서 ConcurrentBag를 사용하여 여러 스레드에서 안전하게 아이템을 추가하고 반복할 수 있습니다.

요약

ConcurrentBag 클래스를 사용하면 여러 스레드 간에 안전하게 컬렉션을 조작할 수 있습니다. 따라서 별도의 동기화나 잠금이 필요 없어 편리하게 다룰 수 있습니다.

더 자세한 정보는 Microsoft Docs를 참조하세요.