Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Parallel programming Rasmus D. Lehrmann DM67 2010.

Lignende præsentationer


Præsentationer af emnet: "Parallel programming Rasmus D. Lehrmann DM67 2010."— Præsentationens transcript:

1 Parallel programming Rasmus D. Lehrmann DM67 2010

2 Indhold Processer og tråde Håndtering af tråde Synkronisering Lock eksempel Monitor eksempel Timer eksempel Opsummering

3 Processer og tråde En proces har mindst 1 tråd Tråde kan køre samtidigt Deler ressourcer Styres normalt af OS Processer er isoleret Allokeret ressourcer En proces kan køre på flere processorer Tråde kan have flere forskellige states tilknyttet: – Unstated, stated, running, blocked, stopped etc.

4 Hvordan ser en tråd ud?

5 Håndtering af tråde Der findes en række klasser som tilbyder håndtering af tråde: – Thread: Inkapsling, CurrentThread og Sleep – Monitor: Synkronisering – Semaphore: Begrænsning – Mutex: Synkronisering imellem tråde – Timer: Timeconfigured methods – M.fl.…

6 Synkronisering Synkronisering kan opnås på flere måde: Igennem monitor klassen, kan der tilgås locks. Semaphore klassen kan begrænse antallet af threads som kan tilgå det samme data. Mutex klassen kan vha signallering notify threads når ressourcen kan tilgås.

7 Lock eksempel static void Main(string[] args) { Console.WriteLine("***** Synchronizing Threads *****\n"); Printer p = new Printer(); Thread[] threads = new Thread[10]; for (int i = 0; i < 10; i++) { threads[i] = new Thread(new ThreadStart(p.PrintNumbers)); threads[i].Name = string.Format("Worker thread #{0}", i); } foreach (Thread t in threads) t.Start(); Console.ReadLine(); }

8 Monitor eksempel public class Printer { public void PrintNumbers() { Monitor.Enter(this); Console.WriteLine("-> {0} is executing PrintNumbers()", Thread.CurrentThread.Name); Console.Write("Your numbers: "); for (int i = 0; i < 10; i++) { Random r = new Random(); Thread.Sleep(1000 * r.Next(5)); Console.Write(i + ", "); } Console.WriteLine(); Monitor.Exit(this); }

9 Timer eksempel class TimePrinter { static void PrintTime(object state){ Console.WriteLine("Time is: {0}, Param is: {1}", DateTime.Now.ToLongTimeString(), state.ToString()); } static void Main(string[] args){ Console.WriteLine("***** Working with Timer type *****\n"); TimerCallback timeCB = new TimerCallback(PrintTime); Timer t = new Timer( timeCB, "Hi", 0, 1000); Console.WriteLine("Hit key to terminate..."); Console.ReadLine(); }

10 Opsummering Parallel programmering Processer og tråde Håndtering af tråde Parallel programmering tillader en at afvikle mange beregninger på samme tid og derved optimer resurseforbrug


Download ppt "Parallel programming Rasmus D. Lehrmann DM67 2010."

Lignende præsentationer


Annoncer fra Google