Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilTobiáš Tichý
1
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky
2
Třída Thread 2 Vytváří a kontroluje vlákna, nastavuje priority a získává jejich stav Vlastnosti Priority ThreadState IsAlive IsBackground Statické vlastnosti CurrentThread Metody Start Sleep Join Interrupt Abort ResetAbort
3
Delegát ThreadStart 1/2 3 class Work { private int data; public int Data { get { return data; } set { data = value; } } public static void DoWork() { Console.WriteLine("Statická metoda"); } public void DoMoreWork() { Console.WriteLine("Instanční metoda. Data = {0}", Data); } class Work { private int data; public int Data { get { return data; } set { data = value; } } public static void DoWork() { Console.WriteLine("Statická metoda"); } public void DoMoreWork() { Console.WriteLine("Instanční metoda. Data = {0}", Data); }
4
Delegát ThreadStart 2/2 4 class Test { static void Main() { ThreadStart threadDelegate = new ThreadStart(Work.DoWork); Thread newThread = new Thread(threadDelegate); newThread.Start(); // Od.NET 2.0 nemusíme vytvářet instanci ThreadStart Work w = new Work(); w.Data = 42; threadDelegate = w.DoMoreWork; newThread = new Thread(threadDelegate); newThread.Start(); } class Test { static void Main() { ThreadStart threadDelegate = new ThreadStart(Work.DoWork); Thread newThread = new Thread(threadDelegate); newThread.Start(); // Od.NET 2.0 nemusíme vytvářet instanci ThreadStart Work w = new Work(); w.Data = 42; threadDelegate = w.DoMoreWork; newThread = new Thread(threadDelegate); newThread.Start(); }
5
Synchronizace zamykáním 5 Příkaz lock je používán pro synchronizaci vláken, které přistupují ke společným zdrojům lock nastavuje zámek na objekt Object thisLock = new Object(); lock (thisLock) { // Critical code section } Object thisLock = new Object(); lock (thisLock) { // Critical code section }
6
lock 1/2 6 public class LockExample { private readonly string word; public LockExample(string word) { this.word = word} public void RunT0() { lock (Console.Out) { for (int i = 0; i < 10; i++) { Console.Write(word); Thread.Sleep(100); } public class LockExample { private readonly string word; public LockExample(string word) { this.word = word} public void RunT0() { lock (Console.Out) { for (int i = 0; i < 10; i++) { Console.Write(word); Thread.Sleep(100); }
7
lock 2/2 7 public class Example { public static void Main() { LockExample le1 = new LockExample("a"); LockExample le2 = new LockExample("b"); Thread t1 = new Thread(le1.RunT0); Thread t2 = new Thread(le2.RunT0); t1.Start(); t2.Start(); } public class Example { public static void Main() { LockExample le1 = new LockExample("a"); LockExample le2 = new LockExample("b"); Thread t1 = new Thread(le1.RunT0); Thread t2 = new Thread(le2.RunT0); t1.Start(); t2.Start(); }
8
Třída Monitor 8 Statické metody Enter TryEnter Exit Wait Pulse PulseAll lock (obj) { … } // je kompilováno jako Monitor.Enter(obj) try { … } finally { Monitor.Exit(obj) } lock (obj) { … } // je kompilováno jako Monitor.Enter(obj) try { … } finally { Monitor.Exit(obj) }
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.