Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.

Podobné prezentace


Prezentace na téma: "PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky."— Transkript prezentace:

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) }


Stáhnout ppt "PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky."

Podobné prezentace


Reklamy Google