C#/Winform
(Linq) PLINQ(병렬 LINQ)
kjun.kr
2017. 9. 17. 21:11
728x90
static Random r = new Random();
static int ObtainLengthSlowly(string name)
{
Thread.Sleep(r.Next(1000));
return name.Length;
}
// 아래 AsParallel 로 인해 6개의 쓰레드 까지 나뉘어 작업이 된다.
string[] names= {"Jun","Kayoung","Hadom","Jeae","Dongsuk"};
var queryPlinq = from name in names.AsParallel()
select ObtainLengthSlowly(name);
var queryPlinq = from name in names.AsParallel()
select ObtainLengthSlowly(name);
foreach (int length in queryPlinq)
{
Console.WriteLine(length);
}
위 결과는 순서 대로가 아닌 아래와 같은 결과가 나온다.
7
4
5
3
7
// AsParallel 을 제거한 결과는 순서대로 출력된다.
var queryPlinq = from name in names
select ObtainLengthSlowly(name);
select ObtainLengthSlowly(name);
foreach (int length in queryPlinq)
{
Console.WriteLine(length);
}
결과
3
7
5
4
7
728x90