본문 바로가기

C#

Parallel.ForEach

Parallel.ForEachParallel 클래스에서 제공하는 또 다른 기능으로, 컬렉션의 각 요소에 대해 병렬로 작업을 수행합니다. Parallel.ForEach를 사용하면 각 요소에 대한 작업이 병렬로 처리되어 더 효과적인 다중 스레드 활용이 가능합니다.

 

간단한 사용 예제를 살펴봅시다:

using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 병렬로 실행할 컬렉션
        var numbers = Enumerable.Range(1, 10);

        // 병렬로 각 요소에 대한 작업 수행
        Parallel.ForEach(numbers, number =>
        {
            Console.WriteLine($"Task {Task.CurrentId} is processing number {number}");
            // 작업 내용을 여기에 추가
        });

        Console.WriteLine("Parallel.ForEach loop completed.");
    }
}

이 예제에서 Parallel.ForEach는 1부터 10까지의 숫자로 이루어진 컬렉션에 대해 각 숫자에 대한 작업을 병렬로 수행합니다. number는 현재 처리 중인 요소를 나타냅니다. 작업 내용은 실제로 처리해야 하는 작업에 따라 다르게 구현될 것입니다.

Parallel.ForEach를 사용할 때도 작업 간의 독립성이 중요합니다. 각 요소에 대한 작업은 서로 독립적이어야 합니다. 작업이 서로 의존하거나 공유 자원에 대한 동기화가 필요한 경우에는 이를 적절히 처리해야 합니다.

Parallel.ForEach와 Parallel.For는 각각 배열 또는 순회 가능한 컬렉션을 처리하는 데에 효과적인 방법을 제공합니다. 사용할 때에는 해당 작업의 특성에 따라 적절한 것을 선택하면 됩니다.

 

https://learn.microsoft.com/ko-kr/dotnet/standard/parallel-programming/data-parallelism-task-parallel-library

 

데이터 병렬 처리(작업 병렬 라이브러리) - .NET

TPL(작업 병렬 라이브러리)에서 .NET의 소스 컬렉션이나 배열의 요소에 대해 동일한 작업을 동시에 수행하도록 데이터 병렬 처리를 지원하는 방법을 알아봅니다.

learn.microsoft.com

 

'C#' 카테고리의 다른 글

String to Enum  (0) 2024.04.02
as  (0) 2024.02.01
C# 리스트 내의 모든 값이 참이면 조건 실행  (0) 2023.11.03
enum 길이  (0) 2023.11.01
C# 교육 5일차  (0) 2023.10.20