Multithreading in c# mit tpl
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,175
On Slideshare
1,354
From Embeds
1,821
Number of Embeds
3

Actions

Shares
Downloads
13
Comments
0
Likes
0

Embeds 1,821

http://www.david-tielke.de 1,623
http://david-tielke.de 195
http://translate.googleusercontent.com 3

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Multithreading mit C#Mit Visual Studio 2010 und .NET 4.0
  • 2. Aboutme…
    B. Eng. David Tielke
    Freiberuflicher Trainer
    Microsoft Student Partner
    Blog: www.David-Tielke.de
    Mail: mail@David-Tielke.de
    Twitter: DavidTielke
  • 3. Agenda
    Prozessoren
    Was sind Prozesse und Threads?
    Multithreading unter .NET
    Synchronisation
    Task Parallel Library
    Zusammenfassung
  • 4. Prozessoren
  • 5. Prozesse
    Enthält Informationen über den Prozess
    Process N
    ProcessControl Block
    UserStack
    „Lokale“ Daten
    UserAddressSpace
    Daten des Prozesses
    (Heap)
  • 13. Das Problem - Viele Prozesse nur einCPU
  • 14. Das Zeitscheibenmodell – Single CPU
  • 15. Das Zeitscheibenmodell – Multicore CPU
  • 16. Datenbank
    Prozess A
    Parallelität in einem Prozess? (1)
  • 17. 1. Parallelität in einem Prozess? (2)
    Process N
    ProcessControl Block
    Thread 1
    Thread n
    Thread 2
    ThreadControl Block
    ThreadControl Block
    ThreadControl Block

    Stack
    Stack
    Stack
    UserAddressSpace
  • 18. Parallelität in einem Prozess? (2)
    Thread 2
    Thread 1
    Thread 3
    Thread 1
    Thread 1
    Thread 2
    Thread 1
    Thread 1
  • 19. Multithreading unter .NET
  • 20. Der Namespace System.Threading
  • 21. Die Klasse Thread
    Hauptklasse für Multithreading in .NET
    Bietet Operationen um
    Threads zu starten / abzubrechen
    Threads zu pausieren / reaktivieren
    Threads warten zu lassen
    Atomare Operationen durchzuführen
    Bietet Eigenschaften um
    Kontext-Informationen zu erhalten
    Status-Informationen zu erhalten
    Prioritäten zu verändern
    Status zu ändern
  • 22. Die Klasse ThreadPool
    Das erstellen von Threads ist sehr aufwändig
    Es muss gemacht werden
    Kontexte vom Basisthread übernehmen
    Ressourcen im Kernel allokieren
    Thread-Kontrollstrukturen (TCB) erstellen
    Kontexte vom Basisthread übernehmen
    Auf Scheduling warten
    Resourcen wieder freigeben

    Für Operationen die schnell ausgeführt werden müssen, eignet sich die Klasse Thread nur bedingt!
  • 23. Die Klasse ThreadPool
    Ein weiteres Problem: Thrashing
    Erstellen von sehr vielen Threads gleichzeitig
    ALLE Threads starten (mehr oder weniger) parallel
    ALLE Threads fügen sich in die Ready-Queue ein
    • Der CPU wird zu 100% ausgelastet, das System reagiert träge
    Lösung mit dem Threadpool
    Scheduler
    Freie Threads
    Thread x
    Thread y
    Thread z
    Delegate Queue
    Worker()
    Worker()
    Worker()

    Arbeitende Threads
    Thread n
  • 24. Die Klasse ThreadPool
    Klasse ist statisch
    Anzahl minimaler und maximaler Threads ist einstellbar
    Anwendung ist einfach:
    Methode(object) erstellen
    Delegaten für die Methode erstellen
    Delegaten an ThreadPool übergeben
    Thatsit…
  • 25. Die Klasse ThreadPool
    Die Klasse Threadpool ist statisch, d.h.:
    Es existiert NUR EINE pro Domäne
    Jedes Programm hat eine eigene
    • Sehr hohe Sicherheit
    Anwendung von Threadpool muss mit Vorsicht geschehen, auch das APM greift auf dem ThreadPool zu.
  • 26. Die Klasse Thread und Threadpool
    nDEMO1_Threads_and_Threadpool
  • 27. Synchronisierung
  • 28. Synchronisierung (Beispiel 1)
    Immer wenn 2 Objekte eine gemeinsame Ressource nutzen, kommt es zu Konflikten
    Um diese Konflikte zu vermeiden, müssen gemeinsame Ressourcen synchronisiert werden.
    Sehr Fehleranfällig (Deadlocks)
  • 29. Synchronisierung (Beispiel 2)
    Thread 2
    Thread 1
    Werte:
    10
    15
    15
    5
    Ausgabe:
    New Point at 15/5
    New Point at 15/15
    Solche Fehler heißen Heisenbugs, der Albtraum aller Entwickler!!!
  • 31. Synchronisierung (Beispiel 4)
    nDEMO2_Synchronizing
  • 32. Task Parallel Library
  • 33. Task Parallel Library
    Parallel Extensions
    TPL
    Structuresfor Parallel Programming
    Parallel LINQ
    Führt Task als Abstrahierung von Thread ein
    Automatisiert viele Vorgänge
    Wesentlich einfacher!!!
  • 34. Task Parallel Library
    nDEMO3_TPL
  • 35. 5. Zusammenfassung
    Prozessorgeschwindigkeit stagniert
    Multicoreprozessoren
    Anpassung unserer Programme
    Threads
    Threadpool
    Synchronisation
    Tasks
    Parallel-Klasse
  • 36. Fragen & Antworten
    Vielen Dank für Ihre Aufmerksamkeit!