티스토리 뷰
Task Parallel Library
Parallel Extension 은 PLINQ 와 더불어 확장 가능한 Task Parallel Library 를 제공합니다. Task Parallel Library 는 PLINQ 를 이용하지 않고 개별적이고 수동적인 병렬 처리 작업을 위해 사용할 수 있습니다.
Task Parallel Library 는 크게 세 가지 방법으로 병렬 처리를 위한 Library 를 제공합니다.
Loops
Task Parallel Extension 으로 병렬 처리를 쉽게 처리할 수 있으며, 병렬 처리로 인자값을 넘기거나 하는 작업을 쉽게 할 수 있습니다.
Statements
[그림3] Parallel.Invoke 를 이용한 병렬 처리
Task
특히 Parallel Extension Library 에서 Task 는 수동적으로 병렬 처리를 하기 위해 다양한 기능을 지원합니다. 정교하게 스레드(Thread) 를 처리했던 것에 비하면 심플하고도 직관적으로 병렬 작업을 처리할 수 있습니다.
Task 는 보다 정교하게 병렬 처리 작업을 할 수 있습니다.
l 대기
l 취소
l 연장
l 상하(부모/자식) 간의 관계
l 디버그 지원
아래는 ThreadPool.QueueUserWorkItem 처럼 바로 작업을 시작하도록 합니다.
Task.StartNew(…); |
아래는 Task 에 대해 대기 및 취소 작업을 진행하도록 합니다.
Task t1 = Task.StartNew(…);
t1.Wait();
t1.Cancel();
Task t2 = t1.ContinueWith(…); |
아래는 작업에 대해 지속적인 병렬 처리를 가능하도록 합니다.
var p = Task.StartNew(() => {
var c = Task.StartNew(…); } |
아래는 특정 작업의 결과를 받아 올 수 있습니다.
var p =
Future.StartNew(() => C());
…
int result = p.Value;
|
Coordination Data Structures
병렬 처리 작업은 PLINQ 와 TPL(Task Parallel Library) 를 지원하기 위해 기존의 데이터 컬렉션 등이 등장하였습니다. 내부적으로 동기화를 지원하지 않았던 문제들을 지원하게 되었고, 특히 오늘날 멀티 코어(Multi Core) 프로세스를 위해 많은 동기적인 문제를 고민해야 했습니다. .NET Framework 4.0 은 이러한 공통적인 문제들을 해결하기 할 수 있습니다.
l Thread-safe collections
– ConcurrentStack<T>
– ConcurrentQueue<T>
– ConcurrentDictionary<TKey,TValue>
– …
l Work exchange
– BlockingCollection<T>
– IProducerConsumerCollection<T>
l Phased Operation
– CountdownEvent
– Barrier
l Locks
– ManualResetEventSlim
– SemaphoreSlim
– SpinLock
– SpinWait
l Initialization
– LazyInit<T>
– WriteOnce<T>
'.NET > C#' 카테고리의 다른 글
Custom LINQ Provider - [2]. Custom LINQ Provider 만들기 (IQueryable) (0) | 2008.03.13 |
---|---|
Custom LINQ Provider - [1]. 소개 (0) | 2008.03.10 |
실전 event [6] - 취소 가능한 버튼 서버컨트롤 활용 (0) | 2007.12.18 |
실전 event [5] - 취소 가능한 버튼 서버컨트롤 만들기 (0) | 2007.12.18 |
실전 event [4] - 취소 가능한 이벤트 만들기 (0) | 2007.12.17 |
- TAG
- c#, C# 4.0, Parallel Extension
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- 2,841,738
- Today
- 3
- Yesterday
- 47
링크
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
TAG
- Windows 8
- monodevelop
- MEF
- .NET Framework 4.0
- c#
- Visual Studio 2008
- testing
- umc
- .NET
- 팀 파운데이션 서버
- ALM
- 땡초
- 엄준일
- Team Foundation Server
- mono
- test
- ASP.NET
- LINQ
- 비주얼 스튜디오 2010
- Managed Extensibility Framework
- Visual Studio 2010
- POWERUMC
- Silverlight
- Visual Studio
- TFS
- Team Foundation Server 2010
- TFS 2010
- 비주얼 스튜디오
- github
- Visual Studio 11
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
- 2020/05 (1)
- 2019/10 (3)
- 2018/11 (1)
- 2018/08 (2)
- 2017/04 (1)
- 2017/01 (2)
- 2016/11 (2)
- 2016/08 (1)
- 2016/05 (1)
- 2016/04 (2)
- 2016/02 (2)
- 2016/01 (1)
- 2015/05 (1)
- 2015/04 (2)
- 2015/03 (1)
- 2015/02 (1)
- 2015/01 (1)
- 2014/11 (1)
- 2014/09 (2)
- 2014/08 (2)
- 2014/05 (2)
- 2014/04 (3)
- 2014/03 (2)
- 2014/02 (2)
- 2014/01 (4)
- 2013/12 (2)
- 2013/11 (1)
- 2013/10 (2)
- 2013/09 (6)
- 2013/08 (3)