C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21



Hasonló dokumentumok
Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

VIII. Szálak és animáció

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Programozási nyelvek és módszerek Java Thread-ek

Generikus Típusok, Kollekciók

Programozási technológia 2.

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Konkurens TCP Szerver

Kölcsönös kizárás, atomicitás, szemafor.

OOP és UML Áttekintés

Szoftvertechnológia alapjai Java előadások

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Folyamatok. 6. előadás

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Párhuzamosság. Java a párhuzamosítást több féle képpen támogatja.

Operációs rendszerek II. Folyamatok ütemezése

Matematikai és Informatikai Intézet. 4. Folyamatok

Az adatbázisrendszerek világa

Uniprogramozás. várakozás. várakozás. Program A. Idő. A programnak várakoznia kell az I/Outasítások végrehajtására mielőtt továbbfuthatna

Operációs rendszerek Folyamatok 1.1

(kernel3d vizualizáció: kernel245_graph.mpg)

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Java programozási nyelv 4. rész Osztályok II.

Objektum orientált kiterjesztés A+ programozási nyelvhez

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Termelő-fogyaszt. fogyasztó modell

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

PROBLÉMAFELVETÉS. Programozás III. Mit csinál? SZÁLAK + MULTIMÉDIA

Operációs rendszerek MINB240

Concurrency in Swing

C++ programozási nyelv

Osztálytervezés és implementációs ajánlások

Végrehajtási szálak - kiegészítések. Szinkronizálás, érvénytelenített metódusok helyettesítése

Osztálytervezés és implementációs ajánlások

Pénzügyi algoritmusok

Grafikus felhasználói felület 3.

Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista

Folyamat- és szálkezelés Microsoft Windows 2000/XP/2003/Vista

Programozási nyelvek Java

Bevezetés a párhuzamos programozási koncepciókba

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programozási nyelvek Java

Operációs rendszerek MINB240

LabView Academy. 4. óra párhuzamos programozás

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Objektumorientált programozás C# nyelven

Operációs Rendszerek II.

Programozás II. 4. Dr. Iványi Péter

Broadcast Service Widget

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

eseményvezérelt megoldások Vizuális programozás 5. előadás

Adatbázisok elmélete 24. előadás

Programozási nyelvek Java

Task-alapú párhuzamosítás C# környezetben

Programozási nyelvek Java

Vodafone ODI ETL eszközzel töltött adattárház Disaster Recovery megoldása. Rákosi Péter és Lányi Árpád

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Operációs rendszerek Folyamatközi kommunikáció 1.1

és az instanceof operátor

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Folyamat- és szálkezelés Microsoft

Tervminták a valósidejű gyakorlatban

C++ programozási nyelv Konstruktorok-destruktorok

6. Közös változóval rendelkező párhuzamos program, Közös változó,

C++ programozási nyelv

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

OPERÁCIÓS RENDSZEREK. A mai program. A CPU által végrehajtott instrukciófolyam. A folyamat kontextus, processz menedzsment, processz állapotok

CAN alapú járműves adatokat megjelenítő szoftver fejlesztése

Programozási technológia

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

Generikus osztályok, gyűjtemények és algoritmusok

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

2. Folyamatok. Operációs rendszerek. Folyamatok. Bevezetés Folyamatkezelés multiprogramozott rendszerekben. Folyamatok modellezése

Szenzorhálózatok programfejlesztési kérdései. Orosz György

Operációs rendszerek. Az NT folyamatok kezelése

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Java és web programozás

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Java programozási nyelv 5. rész Osztályok III.

Objektumelvű programozás

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

JAVA PROGRAMOZÁS 2.ELŐADÁS

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Előadás_# Az első ZH megírása

Globalizáció, Lokalizáció

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Adatbázis Rendszerek II. 10. Tranzakció kezelés 72/1B IT MAN

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

SQLServer. SQLServer konfigurációk

B I T M A N B I v: T M A N

2MU09f_Konkvez_feladatok.pdf Feladatok a tranzakciókezelésbıl

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Szálak szinkronizálása (Ro- Sincronizarea threadurilor)

Operációs rendszerek. 3. előadás Ütemezés

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Átírás:

C# Szálkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 1 / 21

Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 2 / 21

Process Futó program egy példánya Egy program többször is futhat több process Ütemezés egysége Kontextus Tulajdonságai Azonosító (pid) Erőforrás adatok CPU idő Memória Nyitott adatfolyamok Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 3 / 21

Thread Végrehajtás szála Process kontextusban futnak Klasszikus process egy szálon fut. Egy process több szál Párhuzamosság Egyszer implementáció Előnyök Közös kontextus Kevesebb process Nem kell IPC Alacsony menedzselési költség Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 4 / 21

Párhuzamosítás The whole is more than the sum of its parts. Használata GUI Korszerű CPU Megjelenítés Teljesítmény Feldolgozás Feladat felbontása Nagy adatmennyiség pl.: rendezés Egyszerű részfeladatok O(n 2 ) Egy folyamat egy feladat Nagy n esetén lassú Menedzselési költség Részek rendezése Összefésülés Párhuzamos feldolgozás Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 5 / 21

Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 6 / 21

Thread System.Threading Szál reprezentálása Szál kezelése Konstruktor ThreadStart ParameterizedThreadStart Properties CurrentThread IsAlive ThreadState Műveletek Start Abort Join Suspend Resutme Sleep Interupt Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 7 / 21

ThreadStart public delegate void ThreadStart() System.Threading.ThreadStart Delegátum Függvényt azonosít Thread konstruktor paraméter Nagy rugalmasság Implementációt futtatja a Thread Nincs paraméter Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 8 / 21

Thread public delegate void ParameterizedThreadStart( Object obj) System.Threading.ParameterizedThreadStart Delegátum Függvényt azonosít Thread konstruktor paraméter Object paraméter tetszőleges paraméter Castolás as is Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 9 / 21

Thread Állapot Enumeráció Bitek (egyszerre több állapot) Állapotok Unstarted Thread.Start nem lett meghívva Running A szál fut Background Háttér szál WaitSleepJoin Blokkolt StopRequested Meg fog állni Stopped A szál megállt SuspendRequested A szál fel lesz függesztve Suspended Felfüggesztett AbortRequested Thread.Abort meg lett hívva Aborted A szál halott, Stopped-re vált. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 10 / 21

Thread Állapot Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 11 / 21

Kritikus Szakasz Abort megszakítja a futást! Tetszőleges időpont Inkonzisztens állapot Kritikus szakasz Előtte konzisztens állapot Fontos kód, inkonzisztens állapot Utána konzisztens állapot Thread. BeginCriticalRegion(); //Kritikus szakasz Thread. EndCriticalRegion(); Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 12 / 21

Thread Prioritás Ütemezést befolyásolja OS figyelembe veheti (nem kötelező) Szálanként különböző Magasabb prioritás fontosabb szál 1 Highest 2 AboveNormal 3 Normal 4 BelowNormal 5 Lowest Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 13 / 21

Tartalomjegyzék 1 Bevezetés 2 Szálkezelés 3 Konkurens Programozás Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 14 / 21

Osztott erőforrás kezelés Közös kontextus Közös erőforrások Egyszerre hozzáférnek Problémák Nem elemi műveletek Lost Update 1 x = 5; 2 t1: read(x); 3 t2: read(y); 4 t1: write(x+3); 5 t2: write(x-4); Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 15 / 21

Osztott erőforrás kezelés Zárolás Elemi Csak egy szál férhet hozzá. Többi várakozik lock(objektum) { //Zarolt resz, csak az adott szal kezelheti az objektumot } Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 16 / 21

Producer Consumer Probléma Storage Klasszikus példa Szereplők Producer Consumer Storage Osztott erőforrás Mind a termelők, mind a fogyasztók elérik Producer Időközönként termel Eredményét a Storage be rakja Vár, előállítja a következő terméket Consumer Időközönként fogyaszt Storage ből veszi ki Vár, feldolgozza a terméket Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 17 / 21

Holtpont Több erőforrás Több szál Felengedés a szakasz végén Lockolás sorrendje kötött lock(a) { lock(b) { //muveletek } } lock(b) { lock(a) { //muveletek } } Kölcsönösen lock olják a másiknak szükséges objektumot és egyik sem tud tovább lépni! Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 18 / 21

Monitor Osztály Statikus metódusok gyűjteménye Nem lehet példányosítani Kontextus független Thread safe Objektumokhoz való szinkronizált hozzáférés Műveletek Enter TryEnter Wait Pulse (Signal) PulseAll Exit Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 19 / 21

Monitor Enter Object paraméter Zárolja az objektumot Blokkolódik és vár TryEnter bool visszatérési érték Holtpont elkerülés blokkolódás mentes Timeout Exit Feloldja a zárolást Wait Pulse PulseAll Feloldja a zárolást Másik szál zárolásáig blokkolódik Várakozó sor Elengedi az objektumot Következő szálat értesíti Összes várakozó szálat értesíti Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 20 / 21

Lock olás finomítása Csak 1 szál férhet hozzá Különböző műveletek Írás Olvasás Különböző zárolások Finomabb szabályozás Egy írhat Többen olvashatják Ha írják nem lehet olvasni Metódusok AcquireReaderLock AcquireWriterLock ReleaseReaderLock ReleaseWriterLock UpgradeToWriterLock Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés 2013 21 / 21