Paralelní a asynchronní programování. Zdeněk Jurka

Podobné dokumenty
Asynchronní programování v.net

Jakub Čermák Microsoft Student Partner

Paralelní programování

Aleš Keprt Univerzita Palackého v Olomouci listopad 2008, listopad 2009 PARALLEL FX A PARALELNÍ PROGRAMOVÁNÍ NA PLATFORMĚ.NET 4.0

Paralelní programování

Procesy a vlákna (Processes and Threads)

Parallel FX a paralelní programování na platformě. ET

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

Task, async, await METÓ DY VÝPOČTOVEJ INTELIGENCIE A C# FA K ULTA E L E K T ROTECHNIKY A INFORMATIKY S LOVENSKÁ T E CHNICKÁ U NIVERZITA

Reaktivní programování v.net

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Paralelní programování

Principy operačních systémů. Lekce 6: Synchronizace procesů

Procesy a vlákna Mgr. Josef Horálek

Management procesu I Mgr. Josef Horálek

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

C++ 0x aka C++11. Základním kamenem je třída std::thread

Procesy a vlákna - synchronizace

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

NPRG051 Pokročilé programování v C /17 Úkol 2

IRAE 07/08 Přednáška č. 7. Začátek (head)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Paralelní programování

Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

CineStar Černý Most Praha

Microsoft Visual C# 2010

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Principy počítačů a operačních systémů

Lekce 04 Řídící struktury

Paralelní programování

Česká letecká servisní a. s.

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Programování bez vláken. OpenMP

Pavel Procházka. 3. prosince 2014

PB002 Základy informačních technologií

Úvod do programovacích jazyků (Java)

Paralelní programování

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Uklízení odpadků a analýza úniku

1. Zpracování událostí na pozadí aplikace

7.6 Další diagramy UML

Paralelní programování

Základy objektové orientace I. Únor 2010

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

7.6 Další diagramy UML

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Architektury paralelních počítačů II.

Programování v jazyku C# II. 5.kapitola

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ)

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

POČÍTAČE A PROGRAMOVÁNÍ

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Vlákna. První jednoduchý program s vlákny:

Programování v jazyce JavaScript

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Analýza Realizace případů užití

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

PB161 Programování v jazyce C++ Přednáška 9

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011

Vlákna. První jednoduchý program s vlákny:

Přidělování CPU Mgr. Josef Horálek

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Soubor jako posloupnost bytů

Vláknové programování část I

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Reranking založený na metadatech

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

ČÁST 1. Základy 32bitového programování ve Windows

Implementace systémů HIPS: historie a současnost. Martin Dráb

Software602 Form Designer

Vlákna Co je to vlákno?

Operační systémy 2: Zápočtové úkoly

Java/QE Akademie - Osnova


Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

SEKVENČNÍ LOGICKÉ OBVODY

Překladač a jeho struktura

PB153 Operační systémy a jejich rozhraní

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

ilé aspekty distribuovaných objektových systémů

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Využijte plný výkon procesorů s více jádry v LabVIEW 8.5

Transkript:

Paralelní a asynchronní programování Zdeněk Jurka

Obsah přednášky Paralelní vs. Asynchronní programování Thread ThreadPool TPL Async await Synchronizace PLINQ

Paralelní vs. Asynchronní programování Paralelní programování Dělání více věcí najednou Multithreading Forma paralelního programování využívající vlákna Asynchronní programování Druh paralelního programování, využívajícího callbacks k redukci čekání a blokování vláken

Thread Vlastní zásobník Sdílí haldu V C# reprezentováno třídou Thread Můžeme nastavit jméno, prioritu, appartment state, NEPOUŽÍVAT přímo až na specifické případy

ThreadPool ThreadPool pool (návrhový vzor object pool) vláken, recykluje vlákna ThreadPool.QueueUserWorkItem naplánuje úlohu, pool rozhodne kdy ji pustí Nemůžeme nastavit vlastnosti jako u Thread (jméno, )

TPL Task parallel library Představeno v.net 4.0 Podpora pro task based paralelní operace Použito v PLINQ Použito v async await Většina IO operací ve frameworku má task based operace

TPL - Třída Parallel Parallel.Invoke paralelní spuštění akcí Parallel.For paralelní cyklus for Parallel.ForEach paralelní cyklus foreach

TPL - Třída Task Reprezentuje úlohu, která může být naplánováno pro běh na jiném vlákně Task.Run - naplánuje úlohu ke běhu Task<T> - Pokud úloha vrací hodnotu Task.Result výsledek úlohy Task.Wait počká na ukončení úlohy

TPL - Task factory Můžeme spouštět task přímo TaskFactory.StartNew naplánuje novou úlohu Task.Factory default factory Můžeme vytvořit instance s různými plánovači, parametry pro spuštění,

TPL Čekání na dokončení více úloh Task.WaitAll metoda počká na ukončení všech úloh Task.WaitAny metoda počká na první ukončenou úlohu Task.WhenAll vrátí úlohu která skončí až skončí všechny Task.WhenAny vrátí úlohu která skončí až skončí první

TPL Řetězení úloh Můžeme vytvořit řetězec úloh Task.ContinueWith

Task Zpracování výjimek Problém jak přenést výjimku zpět do původního vlákna Task.Exception - výjimka pokud nějaká nastala Task.Status je nastaven na faulted Task.Wait, Task.Result, Task.WaitAny, Task.WaitAll - throws AggregateException

TPL - Task cancelation CancellationTokenSource.Token CancellationTokenSource.Cancel CancellationToken.IsCancellationRequested CancellationToken.ThrowIfCancellationRequested Vytvořený token se předá do operace která podporuje zrušení Zrušení vede k vyjímce OperationCanceledException

TPL Signalizace průběhu operace IReportProgress předá se operaci ReportProgress poskytuje implementaci která eventem informuje o změně průběhu operace

Async await async await klíčová slova async metoda musí vracet Task/Task<T>/void Měla by mít Async suffix Měla by vracet Task by měl být vracen pouze na vrcholu volání např. event handler jinak Task<TResult> await vyhodí první výjimku

Synchronizační primitiva - locking Konstrukt Účel Mezi procesy Overhead lock Zaručí výlučný přístup k bloku kódu - 20 ns Mutex Ano 1000 ns SemaphoreSlim Zaručí že k bloku kódu má přístup maximálně - 200 ns Semaphore definovaný počet vláken/procesů Ano 1000 ns ReaderWriterLockSlim - 40 ns Umožní několik producentů a jednoho konzumenta ReaderWriterLock - 100 ns

Synchronizační primitiva - signalling Konstrukt Účel Mezi procesy Overhead AutoResetEvent Při signalizaci umožní průchod jednomu vláknu Ano 1000 ns ManualResetEvent Ano 1000 ns Umožní průchod dokud není explicitně resetováno ManualReserEventSlim - 40 ns CountdownEvent Umožní průchod po přijetí definovaného počtu signálů - 40 ns

Synchronizace pomocí System.Collections.Concurrent BlockingCollection<T> - jako interní data store může sloužit cokoliv z následujících (IProducerConsumerCollection) ConcurrentQueue<T> ConcurrentStack<T> ConcurrentBag<T>

PLINQ Paralelní implementace LINQ Pokud uzná za vhodné vyhodnocuje výrazy paralelně Operátory AsParallel AsOrdered/AsUnordered WithCancellation WithDegreeOfParallelism WithExecutionMode Další operátory obdobné jako v normálním LINQ

Ing. Zdeněk Jurka Kentico software Nové sady 25 Brno Česká republika E-mail: zdenekj@kentico.com

Reference Cleary, Stephen. Concurrency in C# Cookbook http://www.albahari.com/threading/