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

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 5 Multithreading
Pfeil 5.1 Start eines Threads
Pfeil 5.1.1 Parameterloser Start
Pfeil 5.1.2 Start mit Parameter
Pfeil 5.1.3 Hintergrundthreads
Pfeil 5.1.4 Threadeigenschaften
Pfeil 5.2 Zusammenspiel
Pfeil 5.2.1 Priorität
Pfeil 5.2.2 Warten mit Sleep
Pfeil 5.2.3 Unterbrechen mit Interrupt
Pfeil 5.2.4 Abbruch mit Abort
Pfeil 5.2.5 Warten mit Join
Pfeil 5.2.6 Warten erzwingen mit Suspend
Pfeil 5.2.7 Threadzustände
Pfeil 5.2.8 Die Klasse Thread
Pfeil 5.3 Gesicherter Datenaustausch
Pfeil 5.3.1 Objekte sperren mit Monitor
Pfeil 5.3.2 Codebereiche mit SyncLock sperren
Pfeil 5.3.3 Sperrung mit Zustand
Pfeil 5.3.4 Atomare Operationen
Pfeil 5.3.5 Attributgesteuerte Synchronisation
Pfeil 5.4 Asynchrone Methodenaufrufe
Pfeil 5.4.1 Aufruf
Pfeil 5.4.2 Rückruf
Pfeil 5.4.3 Zustand
Pfeil 5.4.4 Rückgabe
Pfeil 5.4.5 ByRef-Parameter
Pfeil 5.5 Threadpools


Rheinwerk Computing - Zum Seitenanfang

5.5 Threadpools topZur vorigen Überschrift

Da es relativ aufwendig ist, einen Thread zu starten, stellt .NET auch einen Pool von wiederverwendbaren Threads zur Verfügung. Sie müssen weder gestartet noch beendet werden; die Verwaltung übernimmt komplett .NET. Standardmäßig sind pro Prozessor 25 Arbeitsthreads (und 1000 I/O-Threads) im Pool. Tabelle 5.11 zeigt die Mitglieder der Poolklasse.


Tabelle 5.11 Methoden der Klasse »System.Threading.ThreadPool« (alle Shared, kursiv = ByRef)

Methode Beschreibung

SetMaxThreads(worker As Integer, io As Integer) As Boolean GetMaxThreads(worker As Integer, io As Integer)

Maximal gleichzeitig mögliche Threads im Pool (Rückgabe: gibt an, ob erfolgreich gesetzt)

SetMinThreads(worker As Integer, io As Integer) As Boolean GetMinThreads(worker As Integer, io As Integer)

Mindestzahl an Threads im Pool (Rückgabe: gibt an, ob erfolgreich gesetzt)

GetAvailableThreads(worker As Integer, io As Integer)

Gerade verfügbare Threads

QueueUserWorkItem(call As WaitCallback, state As Object) As Boolean UnsafeQueue...: dito, ohne Sicherheitsprüfungen

Ausführung von call in Threadpoolthread, ein optionales state wird an call durchgereicht.

RegisterWaitForSingleObject(w As WaitHandle, call As WaitOrTimerCallback, state As Object, <time>, once As Boolean) As RegisteredWaitHandle UnsafeRegister...: dito, ohne Sicherheitsprüfungen <time>: millisecs As Integer / time As TimeSpan

Ausführung von call in Threadpoolthread, wenn w signalisiert oder bei Zeitüberschreitung

UnsafeRegisterWaitForSingleObject

Wie RegisterWaitForSingle-Object, aber ohne Sicherheitsprüfungen

BindHandle(osHandle As SafeHandle) As Boolean

Native I/O-Operation im Pool ausführen

UnsafeQueueNativeOverlapped( overlapped As NativeOverlapped*) As Boolean

I/O-Operation ohne Sicherheitsüberprüfung


Die wichtigste Methode ist QueueUserWorkItem, mit der Sie eine Methode asynchron ausführen. Die Signatur der Methode ist festgelegt.


Public Delegate Sub WaitCallback(state As Object)

Das folgende Beispiel macht einen Geschwindigkeitsvergleich zwischen normalen Threads und denen aus dem Pool.


'...\ Multitasking\Asynchron\Zeit.vb

Option Strict On 
Imports System.Threading 
Namespace Multitasking 
  Module Zeit

    Sub Rechnen(ByVal eingabe As Object) 
      nr += 1 
    End Sub

    Private nr As Integer 
    Private Const anz As Integer = 100 
    Private Const tps As Long = TimeSpan.TicksPerSecond

    Sub Test() 
      ThreadPool.SetMaxThreads(anz, anz * 10) 
      ThreadPool.SetMinThreads(anz, anz * 10) 
      Thread.Sleep(10000) 
      Dim t0 As Date

      nr = 0 : t0 = Now 
      For i As Integer = 1 To anz 
        ThreadPool.QueueUserWorkItem(AddressOf Rechnen) 
      Next 
      While nr < anz : Thread.Sleep(0) : End While 
      Console.WriteLine("{0} Threadpoolthreads brauchen {1}", _ 
                        anz, (Now.Ticks – t0.Ticks) / tps)

      nr = 0 : t0 = Now 
      For i As Integer = 1 To anz 
        Dim th As New Thread(AddressOf Rechnen) : th.Start() 
      Next 
      While nr < anz : Thread.Sleep(0) : End While 
      Console.WriteLine("{0} Threads brauchen {1}", _ 
                        anz, (Now.Ticks – t0.Ticks) / tps)

      Console.ReadLine() 
    End Sub 
  End Module 
End Namespace

Die Ausgabe zeigt die große Zeitdifferenz der beiden Arten von Threads. Die genauen Zeiten und das Verhältnis unterliegen großen Schwankungen.

100 Threadpoolthreads brauchen 0,1301872 
100 Threads brauchen 2,6137584



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual Basic 2008
Visual Basic 2008
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern