C# Vícevláknové aplikace

Slides:



Advertisements
Podobné prezentace
Objektově orientované programování. Objektově orientovaný přístup k programování je zcela jiný způsob přemýšlení. Jedná se o moderní styl programování,
Advertisements

Strategické otázky výzkumníka 1.Jaký typ výzkumu zvolit? 2.Na jakém vzorku bude výzkum probíhat? 3.Jaké výzkumné metody a techniky uplatnit?
ELEKTRONICKÉ ZABEZPEČOVACÍ SYSTÉMY. Název projektu: Nové ICT rozvíjí matematické a odborné kompetence Číslo projektu: CZ.1.07/1.5.00/ Název školy:
ZÁKLADY POČÍTAČOVÉ GRAFIKY Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_LENKA_KLOUCKOVA_GRAFIKA_ZAKLADY_GRAFIKY_RASTR_03 Název školyStřední škola.
Číslo projektu MŠMT: CZ.1.07/1.5.00/ Číslo materiálu: VY_62_FINANCNIGRAMOTNOST_13_01_ba nka, bankomat Název školy: ZŠ, PŠ a MŠ Česká Lípa, Moskevská.
Název školy ZÁKLADNÍ ŠKOLA, JIČÍN, HUSOVA 170 Číslo projektu CZ.1.07/1.4.00/ Číslo a název klíčové aktivity 3.2 Inovace a zkvalitnění výuky prostřednictvím.
Počítačové sítě 8. Využití sítí © Milan Keršlágerhttp:// Obsah: ● sdílení v sítích.
Zlepšení podmínek pro vzdělávání na středních školách Operačního programu Vzdělávání pro konkurenceschopnost Název a adresa školy: Integrovaná střední.
VZNIK PRACOVNÍHO POM Ě RU Název školy: Základní škola Karla Klíče Hostinné Autor: Mgr. Helena Baculáková Název: VY_32_INOVACE_01_B_08_VZNIK PRACOVNÍHO.
Spolupráce mezi výkresy bloky (s atributy) Design center externí reference.
Systém správy dokumentace akreditované zkušební laboratoře Bc. Jan Randl, 4912.
Předškolní vzdělávání.  Rámcový vzdělávací program vymezuje hlavní požadavky, podmínky a pravidla.  Školní vzdělávací program vytváří každá mateřská.
Elektronické učební materiály - II. stupeň Informatika 6 – aplikace informačních technologií Autor: Bc. Pavel Šiktanc Prezentace - snímky Co se všechno.
Zlepšení podmínek pro vzdělávání na středních školách Operačního programu Vzdělávání pro konkurenceschopnost Název a adresa školy: Integrovaná střední.
TŘENÍ Tato práce je šířena pod licencí CC BY-SA 3.0. Odkazy a citace jsou platné k datu vytvoření této práce. VY_32_INOVACE_18_29.
Objem Objem jako fyzikální veličina Měření objemu.
Počitačová bezpečnost - je obor informatiky, který se zabývá zabezpečením informací v počítačích (odhalení a zmenšení rizik spojených s používáním počítače).
Operační systémy Souběh a uváznutí © Milan Keršláger
OneNote. Co to je?  OneNote patří k produktům Microsoftu, nyní je ke stažení zdarma  jde o aplikaci pro rychlou, snadnou a přehlednou správu různých.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Optický kabel (fiber optic cable)
Technické vybavení počítače - Počítač PC
Operační systémy 9. Spolupráce mezi procesy
Pohyb objektu po křivce
SLOVNÍ DRUHY Název školy: Základní škola Karla Klíče Hostinné
Inf Počítač a lidé s handicapem
Matematika – 8.ročník Přímka a kružnice
Registrační číslo: CZ.1.07/1.4.00/
ELEKTRONICKÉ ZABEZPEČOVACÍ SYSTÉMY
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
Průvodní list Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT   Vzdělávací materiál: Prezentace – zápis pro žáky Určen pro: 2. ročník oboru.
Didaktické zásady Literatura:
Název vzdělávacího materiálu
VY_32_INOVACE_
VY_32_INOVACE_103_Fyzika_zvuk_II
Příkazy (1) Příkazy (commands) slouží pro zjednodušení vyvolání jedné (stejné) funkce programu (pop-sané metodou) pomocí různých prostředků, např.: položka.
Filmová animace Náhodné změny Mgr. Jiří Mlnařík
Databáze MS ACCESS 2010.
Veřejná správa, Regionální rozvoj Litoměřice Jan Jůna 2012
Operační systémy 10. Souběh a uváznutí
Souběh Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Úvodní a seznamovací hry
Písemné dělení jednociferným dělitelem
METODICKÝ LIST PRO ZŠ Pro zpracování vzdělávacích materiálů (VM)v rámci projektu EU peníze školám Operační program Vzdělávání pro konkurenceschopnost   
Kód materiálu: VY_32_INOVACE_16_FUNKCNI_STYLY Název materiálu:
Výukový materiál zpracován v rámci projektu
1. ročník oboru Mechanik opravář motorových vozidel
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
Vzdělávání pro konkurenceschopnost
Cvičení 4 Dědičnost objektů.
Popis výukového materiálu Název: PowerPoint
BIBS Informatika pro ekonomy přednáška 2
Informatika – Grafika.
Téma (název prezentace)
Průvodní list Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT   Vzdělávací materiál: Prezentace – zápis pro žáky Určen pro: 2. ročník oboru.
Instalace OS Linux Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Pozn. Zaměřeno na práci v MS PowerPoint
Matematika – 8.ročník Přímka a kružnice
Materiál byl vytvořen v rámci projektu
Remote login.
název projektu: Šablony Špičák číslo projektu: CZ.1.07/1.4.00/
Přednášky z Distribuovaných systémů
Nádherné prezentace navrhnete a předvedete snadno a s jistotou.
Název operačního programu: OP Vzdělávání pro konkurenceschopnost
Matematika + opakování a upevňování učiva
Informační systém základních registrů
Procesy – základní pojmy
PRAVOÚHLÁ SOUSTAVA SOUŘADNIC
Přímky, úsečky, rovnoběžky, kolmice, kružnice
Class Diagrams.
Transkript prezentace:

C# Vícevláknové aplikace

Úvod Každý proces OS má právě jedno hlavní vlákno, které funguje jako vstupní bod aplikace Vlákno jako vykonávací cesta uvnitř procesu Primárná vlákno vytváří dodatečná vlákna sekundární Vlákna mají souběžný přístup ke sdíleným datům Jmenný prostor System.Threading Typ System.Thread

.Stavy vláken (podprocesů) System.Threading.ThreadState Running Suspended Unstarted Aborted WaitSleepJoin

Pomocí klíčového slova lock Synchronizace vláken Pomocí klíčového slova lock Definujete obor příkazů, které budou mezi vlákny synchronizovány Příchozí vlákna nebudou moci přerušit aktuální vlákno a zabránit mu, aby dokončilo svou práci Klíčové slovo lock požaduje, abyste specifikovali nějaký doklad (odkaz na objekt), který musí vlákno mít, chce-li vstoupit do oboru lock Pomocí typu System.Threading.Monitor Monitor.Enter() přijímá doklad vlákna Monitor.Exit() uvolní doklad vlákna Kód uvnitř oboru zámku je zabalen do bloku try

Pomocí typu System.Threading.Interlocked Synchronizace vláken Pomocí typu System.Threading.Interlocked Ve vícevláknovém prostředí jsou bezpečné pouze atomické operace Atomických operací je velmi málo (v dokumentaci SDK) Přiřazení hodnoty do členské proměnné není atomický !!! Interlocked je vhodný pro jednoduché aritmetické operace Menší náklady než Monitor Metody System.Threading.Interlocked CompareExchanged() – otestuje 2 hodnoty na rovnost a pokud se rovnají změní jednu hodnotu na třetí hodnotu Decrement() – Bezpečně sníží hodnotu o 1 Increment() - Bezpečně zvýší hodnotu o 1 Exchange() – Bezpečně prohodí 2 hodnoty

Synchronizace vláken - příklad Lock Public void AddOne() { lock(this) { intVal++; } } Interlocked int newVal = Interlocked.Increment(ref intVal);

Pomocí atributu [Synchronization] Synchronizace vláken Pomocí atributu [Synchronization] Atribut úrovně třídy Uzamkne veškerý členský instanční kód třídy Umístí objekt do synchronizovaného kontextu Pomocí System.Threading.SpinLock Podproces by měl držet zámek co nejkratší Pomocí System.Threading.Mutex Nejtěžší typ zámku Použitelný ve více procesech Používá jedinečné jméno

Pomocí System.Threading.Semaphore Synchronizace vláken Pomocí System.Threading.Semaphore Používá se k souběžnému přístupu několika podprocesů k určitému prostředku Podproces (vlákno) do semaforu pomocí metody WaitOne() a snižuje počitadlo semaforu o jedna Pokud je počitadlo na nule, přístup podprocesů je blokován Metoda Release() zvyšuje počitadlo o jedna Těžký synchronizační objekt

Thread Pool Tvorbu vláken necháme na běhovém prostředí Použití pro jednoduché případy Thread controller přiřazuje vlákna úkolům Třída ThreadPool nám reprezentuje “zásobník” vláken, které řídí běhové prostředí Přes rozhraní sdělujeme, že bychom chtěli určitou metodu zavolat asynchronně ThreadPool je jedinečný pro proces CLR

Asynchronní delegáty Delegát jako potomek MulticastDelegate obsahuje metody BeginInvoke() a EndInvoke() public interface IAsyncResult { object AsyncState { get; } waitHandle AsyncWaitHandle { get; } bool IsCompleted { get; } … }