Parallel은 병렬처리를 위해 사용된다
병렬처리는 하나의 작업을 여러 작업자가 나누어 수행한 뒤 하나의 결과로 만드는 것을 말한다.
Parallel 클래스는 Parallel.For(), Parallel.Foreach() 등의 메소드를 제공하면서 병렬처리를 쉽게 구현할 수 있도록 해준다. 방대한 양의 데이터를 처리하는 경우 스레드 간에 서로 값에 영향을 받지않는다면 순차 처리 하는 것보다 빠른 시간 내에 처리가 가능하다. 단, 다중 스레드로 병렬처리 하는 경우 반복문 내의 작업이 인덱스 순서대로 진행되는 것은 아니다.
멀티코어 프로세서의 이점을 활용하여 작업을 동시에 실행할 수 있도록 도와준다. 가장 많이 사용되는 메서드는 Parallel.For
와 Parallel.ForEach
이다.
Parallel.For
예제
Parallel.For
은 특정 범위의 반복 작업을 병렬로 수행할 때 사용된다.
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 0부터 9까지의 숫자를 병렬로 처리
Parallel.For(0, 10, i =>
{
Console.WriteLine($"작업 {i} - 스레드 ID: {System.Threading.Thread.CurrentThread.ManagedThreadId}");
});
Console.WriteLine("모든 작업 완료.");
}
}
위의 코드는 0부터 9까지 숫자를 병렬로 처리하고, 각 숫자에 대한 작업을 수행한다. 각 작업은 스레드 ID를 출력하여 작업이 병렬로 실행되는 모습을 보여준다.
Parallel.ForEach
예제
Parallel.ForEach
는 컬렉션의 각 요소에 대해 병렬로 작업을 수행할 때 사용된다.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
static void Main()
{
var numbers = new List<int> { 1, 2, 3, 4, 5 };
// 리스트의 각 요소를 병렬로 처리
Parallel.ForEach(numbers, number =>
{
Console.WriteLine($"숫자 {number} - 스레드 ID: {System.Threading.Thread.CurrentThread.ManagedThreadId}");
});
Console.WriteLine("모든 작업 완료.");
}
}
이 코드는 List<int>
의 각 숫자를 병렬로 처리하고, 각 숫자에 대한 작업을 수행한다. 스레드 ID를 출력하여 병렬로 실행되는 작업을 보여준다.