180 likes | 304 Views
Aplikacje równoległe są dla każdego. Paweł Łukasik Wroc.NET. mail: lukasik.pawel@gmail.com Twitter : @ pawel_lukasik. AGENDA. Po co nam coś nowego? ThreadPool w .NET 4 Data parallelism Task parallelism Nowe klasy „zsynchronizowane” Narzędzia. Po co nam coś nowego?.
E N D
Aplikacje równoległe są dla każdego Paweł Łukasik Wroc.NET mail: lukasik.pawel@gmail.com Twitter: @pawel_lukasik
AGENDA • Po co nam coś nowego? • ThreadPool w .NET 4 • Data parallelism • Taskparallelism • Nowe klasy „zsynchronizowane” • Narzędzia
Po co nam coś nowego? The purpose of the TPL is to make developers more productive by simplifying the process of adding parallelism and concurrency to applications. The TPL scales the degree of concurrency dynamically to most efficiently use all the processors that are available. In addition, the TPL handles the partitioning of the work, the scheduling of threads on the ThreadPool, cancellation support, state management, and other low-level details. By using TPL, you can maximize the performance of your code while focusing on the work that your program is designed to accomplish. • Abstrakcja • Spójne API • Uproszczone użycie • Dynamiczne zrównoleglenie • Anulowanie zadań • Stany wątków A wszystko to tylko w jednym celu….
ThreadPool – Co nowego? • Zmiana wewnętrznego działania – mniej blokowania • Wykradanie zadań (work-stealing) • Szybszy - od 2x (na Dual) do 5,6x (na Quad)
Global queue T1 T2 T3 Thread 1 Thread 2
Podsumowanie • Użycie • ParallelOptions • Anulowanie • Różne strategie wyjścia (tzw. EarlyTermination) • Partitioner • Local state
TPL - podsumowanie • Sposób użycia • TaskCreationOptions (PreferFairness, AttachToParent, LongRunning) • TaskContinuationOptions (NotOn…, OnlyOn) • Scheduler • Anulowanie
PLINQ - Podsumowanie • .AsParallel, ParallelEnumerable • WithDegreeOfParallelism • WithExecutionMode • WithMergeOptions • WithCancellation
Podsumowanie – Concurrentclasses • Thread-safe • BlockingCollection • ConcurrentQueue
DebuggingTools - Podsumowanie • Pozwalają w łatwiejszy sposób przyjrzeć się naszej aplikacji • Śledzenie tasków (ParallelTasks) • Obrazowanie zależności (ParallelStacks) • Wydajność (Performance Analysis)
Źródła • http://msdn.microsoft.com/en-gb/concurrency/default.aspx • http://blogs.msdn.com/pfxteam/default.aspx • http://code.msdn.microsoft.com/ParExtSamples • http://blogs.msdn.com/pfxteam/archive/2010/04/21/9997559.aspx • Axum - http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx
Dziękuję za uwagę Pytania?