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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Multithreading in c# mit tpl

2,793
views

Published on

Published in: Technology, Business

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,793
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

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!