[c#] C# yield 문과 병렬 프로그래밍

C#의 yield 문은 순차적으로 데이터를 반환하는 데 사용됩니다. 이 문은 병렬 프로그래밍에서 유용한 기능과 함께 사용될 수 있습니다. 이 글에서는 C#에서의 yield 문과 병렬 프로그래밍을 함께 다루어보겠습니다.

yield 문

C#의 yield 문은 IEnumerator 또는 IEnumerable 인터페이스를 구현한 컬렉션에서 데이터를 반환하는 데 사용됩니다. 이를 통해 컬렉션의 요소를 지연 로드할 수 있습니다. 이는 대규모 데이터셋을 다룰 때 메모리를 효율적으로 관리하는 데 도움이 됩니다.

public IEnumerable<int> GetNumbers()
{
    for (int i = 1; i <= 10; i++)
    {
        yield return i;
    }
}

위의 예시에서 GetNumbers 메서드는 1부터 10까지의 숫자를 순차적으로 반환합니다. 이때 yield return 문을 사용하여 각 숫자를 반환하고 호출자에게 컨트롤을 반환합니다.

병렬 프로그래밍

C#의 병렬 프로그래밍은 Parallel 클래스를 통해 제공됩니다. 이를 사용하여 병렬로 실행되는 작업을 쉽게 구현할 수 있습니다. 병렬 처리를 통해 성능을 최적화하고 멀티코어 CPU의 잠재력을 활용할 수 있습니다.

Parallel.ForEach(GetNumbers(), number =>
{
    Console.WriteLine(number);
});

위의 예시에서 Parallel.ForEach를 사용하여 GetNumbers 메서드에서 반환된 숫자들을 병렬로 처리하고 출력합니다.

yield 문과 병렬 프로그래밍의 결합

yield 문과 병렬 프로그래밍을 함께 사용하면 데이터 지연 로드와 병렬 처리를 모두 활용할 수 있습니다. 컬렉션의 데이터를 지연 로드하면서 병렬로 처리하여 시간과 자원을 효율적으로 관리할 수 있습니다.

Parallel.ForEach(GetNumbers(), number =>
{
    ProcessNumber(number);
});

public void ProcessNumber(int number)
{
    // 숫자를 처리하는 작업
}

위의 예시에서 ProcessNumber 메서드를 사용하여 각 숫자를 처리하는 작업을 병렬로 수행합니다.

결론

C#에서의 yield 문은 데이터를 지연 로드하는 데 유용하며, 병렬 프로그래밍을 통해 성능을 최적화할 수 있습니다. yield 문과 병렬 프로그래밍을 함께 사용하여 대규모 데이터를 효율적으로 처리할 수 있습니다.

병렬 프로그래밍에 대한 더 자세한 내용은 Microsoft 공식 문서를 참고하세요.