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
'C# > Winform' 카테고리의 다른 글
(.NET) ConcurrentDictionary<TKey, TValue> (0) | 2017.09.17 |
---|---|
(.NET) ExpandoObject (0) | 2017.09.17 |
(.NET) null 값 미리 체크하기 (0) | 2017.09.17 |
윈폼 컨트롤 비동기로 다루기 (MethodInvoker) (0) | 2017.08.24 |
enum 데이터 combobox 에 사용하기 (0) | 2017.08.10 |