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

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



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual Basic 2008
Visual Basic 2008
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Visual Basic 2012






 Visual Basic 2012


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
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