Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Über den Autor
Vorwort zur 4. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Klassendesign und Vererbung
4 Weitere .NET-Datentypen
5 Weitere Möglichkeiten von C#
6 Projektmanagement und Visual Studio 2008
7 Fehlerbehandlung und Debugging
8 LINQ
9 Multithreading und asynchrone Methodenaufrufe
10 Arbeiten mit Dateien und Streams
11 Serialisierung
12 Einige wichtige .NET-Klassen
13 Grundlagen zum Erstellen einer Windows-Anwendung
14 Die wichtigsten Steuerelemente
15 Tastatur- und Mausereignisse
16 MDI-Anwendungen
17 Grafische Programmierung mit GDI+
18 Das Drucken (Printing)
19 Steuerelemente entwickeln
20 Programmiertechniken
21 WPF – die Grundlagen
22 Die Layoutcontainer
23 Die WPF-Controls
24 Konzepte von WPF
25 ADO.NET – die Verbindung zu einer Datenbank herstellen
26 Die Datenbankabfrage
27 Der SqlDataAdapter
28 Daten im lokalen Speicher – das DataSet
29 Eine Datenbank aktualisieren
30 Stark typisierte DataSets
31 Weitergabe von Anwendungen
Stichwort

Download:
- ZIP, ca. 13,6 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual C# 2008 von Andreas Kuehnel
Das umfassende Handbuch
Buch: Visual C# 2008

Visual C# 2008
geb., mit DVD
1.366 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1172-7
Pfeil 9 Multithreading und asynchrone Methodenaufrufe
Pfeil 9.1 Multithreading
Pfeil 9.2 Threadzustände und Prioritäten
Pfeil 9.3 Einsatz von mehreren Threads
Pfeil 9.4 Die Entwicklung einer Multithreading-Anwendung
Pfeil 9.4.1 Die Klasse »Thread«
Pfeil 9.4.2 Threadpools nutzen
Pfeil 9.5 Die Synchronisation von Threads
Pfeil 9.5.1 Unsynchronisierte Threads
Pfeil 9.5.2 Der »Monitor« zur Synchronisation
Pfeil 9.5.3 Das Synchronisationsobjekt »Mutex«
Pfeil 9.5.4 Das Attribut »MethodImpl«
Pfeil 9.6 Asynchrone Methodenaufrufe
Pfeil 9.6.1 Asynchroner Methodenaufruf
Pfeil 9.6.2 Asynchroner Aufruf mit Rückgabewerten
Pfeil 9.6.3 Eine Klasse mit asynchronen Methodenaufrufen

9 Multithreading und asynchrone Methodenaufrufe


Galileo Computing - Zum Seitenanfang

9.1 Multithreading topZur vorigen Überschrift

Stellen Sie sich eine beliebige Anwendung vor, die in der Lage ist, Mails zu versenden. Das Versenden kann, wenn die Mail mehrere größere Anhänge hat, durchaus einen längeren Zeitraum in Anspruch nehmen. Während des Versendens wird eine Sanduhr angezeigt, und der Anwender kann nicht mit der Applikation weiterarbeiten. Erstrebenswert ist es, dem Anwender eine Anwendung auszuliefern, die ohne eine Verzögerung auskommt. Dazu wäre nur eine Applikation in der Lage, die das Multithreading beherrscht. Mit einer solchen Anwendung könnte der Benutzer weiterarbeiten, während (scheinbar) gleichzeitig die Mail verschickt wird.

Die Entgegennahme der Benutzereingabe und das Versenden der Mail sind zwei Operationen, die in einer multithreading-fähigen Anwendung voneinander unabhängig sind und innerhalb eines einzigen Prozesses ablaufen. Beide Operationen können dabei dieselben Daten benutzen. Jeder Operation wird dazu ein eigener Thread zugeordnet. Ein Thread ist eine Ausführungseinheit und besteht aus einer kontinuierlichen Abfolge von Anweisungen. Sie werden weiter unten in den Beispielen noch sehen, wie das zu verstehen ist.

Jeder gestarteten Anwendung ist ein Prozess zugeordnet, in dem mindestens ein Thread existiert. Somit ist ein Thread die kleinste Ausführungseinheit und gehört im Umkehrschluss grundsätzlich immer zu einem Prozess. Wird der letzte Thread eines Prozesses zerstört, wird die Laufzeitumgebung der Anwendung beendet.

Wenn man eine Ein-Prozessor-Maschine voraussetzt, kann zu einem gegebenen Zeitpunkt nur ein Thread von der CPU bearbeitet werden. Stehen mehrere Threads derselben oder auch unterschiedlicher Anwendungen zur Ausführung in einer Warteschlange, erfolgt der Austausch der Threads in der CPU in sehr kleinen Zeitintervallen. Einem Anwender fällt das nicht auf – aus seiner Sicht erscheint es so, als würde die Ausführung gleichzeitig erfolgen.

Die gesamte Zeit, über die ein Mikroprozessor verfügt, veranschaulicht man sich häufig durch eine Kreisfläche, auch Zeitscheibe genannt. Die Zeitscheibe wird in eine bestimmte Anzahl von Kreisausschnitten aufgeteilt – diese entsprechen der Anzahl der aktiven Threads. Jeder Ausschnitt, der vom Betriebssystem und vom Prozessortyp abhängt, beschreibt eine gleich große Bogenlänge. Die Bogenlänge stellt die Prozessorzeit dar, die dem Thread zur Verfügung steht. Eine Komponente des Systems, der Scheduler, ist für die Zuteilung einer Zeitscheibeneinheit an einen wartenden Thread zuständig.

In Abbildung 9.1 stellt die CPU jedem Thread 20 Millisekunden zur Verfügung, gleichzeitig sind acht Threads gleichberechtigt aktiv. Der Prozess A ist daran mit vier Threads beteiligt, der Prozess B mit zwei und die Prozesse C und D mit je einem. Somit beschreibt die Zeitscheibe eine Gesamtzeit von 160 Millisekunden. Falls sich an der Bedingung nichts ändert, gelangt jeder Thread alle 0,16 Sekunden zur Ausführung, zu der ihm insgesamt 20 Millisekunden zur Verfügung stehen – einschließlich des Ladens der Daten aus dem Stack in die Register der CPU und des Entladens, wenn die Zeit für den Thread abgelaufen ist.

Abbildung 9.1 Die Zeitscheibe eines Mikroprozessors

Im Kontext jedes Threads sind alle Informationen enthalten, um die unterbrochene Ausführung zu einem späteren Zeitpunkt wieder problemlos aufnehmen zu können. Dazu gehören die Inhalte der CPU-Register zu dem Zeitpunkt, zu dem der Thread den Prozessor verlassen hat, sowie alle Informationen, die den Zustand des Threads beschreiben.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2008






Visual C# 2008
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Coding for Fun






 Coding for Fun


Zum Katalog: Einstieg in Visual C# 2008






 Einstieg in
 Visual C# 2008


Zum Katalog: Videotraining - Visual C# 2008






 Videotraining -
 Visual C# 2008


Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2008






 Fortgeschrittene
 Programmierung mit
 Visual C# 2008


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Visual Basic 2008






 Visual Basic 2008


Zum Katalog: Einstieg in XML






 Einstieg in XML


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de