SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Multithreading mit C#Mit Visual Studio 2010 und .NET 4.0
Aboutme… B. Eng. David Tielke Freiberuflicher Trainer Microsoft Student Partner Blog: www.David-Tielke.de Mail: mail@David-Tielke.de Twitter: DavidTielke
Agenda Prozessoren Was sind Prozesse und Threads? Multithreading unter .NET Synchronisation Task Parallel Library  Zusammenfassung
Prozessoren
Prozesse Enthält Informationen über den Prozess ,[object Object]
 Usertoken
PSW
 Register
Stackpointer
… Process N ProcessControl Block UserStack „Lokale“ Daten ,[object Object]
 Rücksprungadressen
…UserAddressSpace Daten des Prozesses (Heap)
Das Problem - Viele Prozesse nur einCPU
Das Zeitscheibenmodell – Single CPU
Das Zeitscheibenmodell – Multicore CPU
Datenbank Prozess A Parallelität in einem Prozess? (1)
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
Parallelität in einem Prozess? (2) Thread 2 Thread 1 Thread 3 Thread 1 Thread 1 Thread 2 Thread 1 Thread 1
Multithreading unter .NET
Der Namespace System.Threading
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
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!
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 ,[object Object],Lösung mit dem Threadpool Scheduler Freie Threads Thread x Thread y Thread z Delegate Queue Worker() Worker() Worker() … Arbeitende Threads Thread n
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…
Die Klasse ThreadPool Die Klasse Threadpool ist statisch, d.h.: Es existiert NUR EINE pro Domäne Jedes Programm hat eine eigene ,[object Object],Anwendung von Threadpool muss mit Vorsicht geschehen, auch das APM greift auf dem ThreadPool zu.
Die Klasse Thread und Threadpool nDEMO1_Threads_and_Threadpool
Synchronisierung
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)

Weitere ähnliche Inhalte

Andere mochten auch

What is software engineering
What is software engineeringWhat is software engineering
What is software engineeringJennifer Polack
 
10 books that every developer must read
10 books that every developer must read10 books that every developer must read
10 books that every developer must readGanesh Samarthyam
 
Einführung in .NET mit C#
Einführung in .NET mit C#Einführung in .NET mit C#
Einführung in .NET mit C#mspgermany
 
Visualising Data with Code
Visualising Data with CodeVisualising Data with Code
Visualising Data with CodeRi Liu
 
Informe escuela estruturalista copiaClase Dra Ana Chavez
Informe escuela estruturalista   copiaClase Dra Ana ChavezInforme escuela estruturalista   copiaClase Dra Ana Chavez
Informe escuela estruturalista copiaClase Dra Ana ChavezMely Bustillos
 
Mobile Social Campaigning mit match2blue für Kurt Beck
Mobile Social Campaigning mit match2blue für Kurt BeckMobile Social Campaigning mit match2blue für Kurt Beck
Mobile Social Campaigning mit match2blue für Kurt Beckmatch2blue
 
GÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMO
GÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMOGÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMO
GÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMOLorenzo Pinto
 
Programa Quimica Segundo semestre
Programa Quimica Segundo semestrePrograma Quimica Segundo semestre
Programa Quimica Segundo semestreIngrid Aldana
 
Sharepoint 2013 apps präsentation
Sharepoint 2013 apps präsentationSharepoint 2013 apps präsentation
Sharepoint 2013 apps präsentationNils Nägele
 
Nordkorea
NordkoreaNordkorea
Nordkoreathoerna
 
Kampaweb Soirée Online-Kampagnenarbeit
Kampaweb Soirée Online-KampagnenarbeitKampaweb Soirée Online-Kampagnenarbeit
Kampaweb Soirée Online-KampagnenarbeitKampaweb
 

Andere mochten auch (20)

What is software engineering
What is software engineeringWhat is software engineering
What is software engineering
 
10 books that every developer must read
10 books that every developer must read10 books that every developer must read
10 books that every developer must read
 
Einführung in .NET mit C#
Einführung in .NET mit C#Einführung in .NET mit C#
Einführung in .NET mit C#
 
Cloud History 101
Cloud History 101Cloud History 101
Cloud History 101
 
Visualising Data with Code
Visualising Data with CodeVisualising Data with Code
Visualising Data with Code
 
Informe escuela estruturalista copiaClase Dra Ana Chavez
Informe escuela estruturalista   copiaClase Dra Ana ChavezInforme escuela estruturalista   copiaClase Dra Ana Chavez
Informe escuela estruturalista copiaClase Dra Ana Chavez
 
Ber br-d[1]
Ber br-d[1]Ber br-d[1]
Ber br-d[1]
 
Strategische Wirtschaftspartnerschaften
Strategische WirtschaftspartnerschaftenStrategische Wirtschaftspartnerschaften
Strategische Wirtschaftspartnerschaften
 
ÖW Marketingkampagne Winter 2014/15 Polen
ÖW Marketingkampagne Winter 2014/15 PolenÖW Marketingkampagne Winter 2014/15 Polen
ÖW Marketingkampagne Winter 2014/15 Polen
 
Mobile Social Campaigning mit match2blue für Kurt Beck
Mobile Social Campaigning mit match2blue für Kurt BeckMobile Social Campaigning mit match2blue für Kurt Beck
Mobile Social Campaigning mit match2blue für Kurt Beck
 
QM Handuch easy
QM Handuch easyQM Handuch easy
QM Handuch easy
 
GÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMO
GÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMOGÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMO
GÉNEROS PERIODÍSTICOS DEL FOTOPERIODISMO
 
Marketingkampagne Winter 2013/14 Deutschland
Marketingkampagne Winter 2013/14 DeutschlandMarketingkampagne Winter 2013/14 Deutschland
Marketingkampagne Winter 2013/14 Deutschland
 
Programa Quimica Segundo semestre
Programa Quimica Segundo semestrePrograma Quimica Segundo semestre
Programa Quimica Segundo semestre
 
Förderprogramme für die altengerechte Quartiersentwicklung (Fachtagung “Anla...
Förderprogramme für die altengerechte Quartiersentwicklung  (Fachtagung “Anla...Förderprogramme für die altengerechte Quartiersentwicklung  (Fachtagung “Anla...
Förderprogramme für die altengerechte Quartiersentwicklung (Fachtagung “Anla...
 
Sharepoint 2013 apps präsentation
Sharepoint 2013 apps präsentationSharepoint 2013 apps präsentation
Sharepoint 2013 apps präsentation
 
Nordkorea
NordkoreaNordkorea
Nordkorea
 
Ein Winter voller Lebensfreude 2013/14 MAFO
Ein Winter voller Lebensfreude 2013/14 MAFOEin Winter voller Lebensfreude 2013/14 MAFO
Ein Winter voller Lebensfreude 2013/14 MAFO
 
Kampaweb Soirée Online-Kampagnenarbeit
Kampaweb Soirée Online-KampagnenarbeitKampaweb Soirée Online-Kampagnenarbeit
Kampaweb Soirée Online-Kampagnenarbeit
 
Leer una imagen
Leer una imagenLeer una imagen
Leer una imagen
 

Ähnlich wie Multithreading in c# mit tpl

Thread basierte Anwendungsentwicklung mit PHP
Thread basierte Anwendungsentwicklung mit PHPThread basierte Anwendungsentwicklung mit PHP
Thread basierte Anwendungsentwicklung mit PHPJosef Willkommer
 
Icinga mit Puppet - Hamburg 2013
Icinga mit Puppet  - Hamburg 2013Icinga mit Puppet  - Hamburg 2013
Icinga mit Puppet - Hamburg 2013NETWAYS
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 
Woop - Workflow Optimizer
Woop - Workflow OptimizerWoop - Workflow Optimizer
Woop - Workflow OptimizerMartin Homik
 
Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Michael Romer
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtAndreas Schreiber
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
Tech-Talk: Python vs. Ruby
Tech-Talk: Python vs. RubyTech-Talk: Python vs. Ruby
Tech-Talk: Python vs. Rubyschlauch
 
Streaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der WahlStreaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der WahlMatthias Niehoff
 

Ähnlich wie Multithreading in c# mit tpl (20)

Thread basierte Anwendungsentwicklung mit PHP
Thread basierte Anwendungsentwicklung mit PHPThread basierte Anwendungsentwicklung mit PHP
Thread basierte Anwendungsentwicklung mit PHP
 
Windows Powershell
Windows PowershellWindows Powershell
Windows Powershell
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
Icinga mit Puppet - Hamburg 2013
Icinga mit Puppet  - Hamburg 2013Icinga mit Puppet  - Hamburg 2013
Icinga mit Puppet - Hamburg 2013
 
C++ kompakt
C++ kompaktC++ kompakt
C++ kompakt
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
Woop - Workflow Optimizer
Woop - Workflow OptimizerWoop - Workflow Optimizer
Woop - Workflow Optimizer
 
Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in java
 
Distributed Programming in Mozart
Distributed Programming in MozartDistributed Programming in Mozart
Distributed Programming in Mozart
 
openHAB @ JUG Stuttgart
openHAB @ JUG StuttgartopenHAB @ JUG Stuttgart
openHAB @ JUG Stuttgart
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 07: Betriebssysteme
BIT I WiSe 2014 | Basisinformationstechnologie I - 07: BetriebssystemeBIT I WiSe 2014 | Basisinformationstechnologie I - 07: Betriebssysteme
BIT I WiSe 2014 | Basisinformationstechnologie I - 07: Betriebssysteme
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen IBit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
Tech-Talk: Python vs. Ruby
Tech-Talk: Python vs. RubyTech-Talk: Python vs. Ruby
Tech-Talk: Python vs. Ruby
 
Streaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der WahlStreaming Plattformen und die Qual der Wahl
Streaming Plattformen und die Qual der Wahl
 
openHAB @ rheinJUG Düsseldorf
openHAB @ rheinJUG DüsseldorfopenHAB @ rheinJUG Düsseldorf
openHAB @ rheinJUG Düsseldorf
 
Bit wisem 2015-wieners-sitzung-08_Betriebssysteme: Metaphern, Datei- und Ress...
Bit wisem 2015-wieners-sitzung-08_Betriebssysteme: Metaphern, Datei- und Ress...Bit wisem 2015-wieners-sitzung-08_Betriebssysteme: Metaphern, Datei- und Ress...
Bit wisem 2015-wieners-sitzung-08_Betriebssysteme: Metaphern, Datei- und Ress...
 

Multithreading in c# mit tpl