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);

 

foreach (int length in queryPlinq)
{
    Console.WriteLine(length);
}

위 결과는 순서 대로가 아닌 아래와 같은 결과가 나온다.

7
4
5
3

 

// AsParallel 을 제거한 결과는 순서대로 출력된다.

var queryPlinq = from name in names
            select ObtainLengthSlowly(name);

 

foreach (int length in queryPlinq)
{
    Console.WriteLine(length);
}

 

결과

3
7
5
4
7

 

728x90
Posted by kjun.kr
,