Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Datenparallelität (Task Parallel Library)

Datenparallelismus verweist auf Szenarien, in denen der gleiche Vorgang gleichzeitig (d. h. parallel) für Elemente in einer Quellauflistung oder einem Array ausgeführt wird. In parallelen Datenvorgängen wird die Quellauflistung partitioniert, sodass mehrere Threads gleichzeitig auf verschiedene Segmente angewendet werden können.

Die Task Parallel Library (TPL) unterstützt Datenparallelität durch die System.Threading.Tasks.Parallel-Klasse. Diese Klasse stellt methodenbasierte parallele Implementierungen von für und von foreach Schleifen (For und For Each in Visual Basic). Sie schreiben die Schleifenlogik für eine Parallel.For-Schleife oder Parallel.ForEach-Schleife weitgehend auf die gleiche Weise wie eine sequenzielle Schleife. Sie müssen keine Threads erstellen oder Arbeitsaufgaben in die Warteschlange einreihen. In grundlegenden Schleifen sind keine Sperren erforderlich. Die TPL übernimmt alle Arbeiten auf niedriger Ebene für Sie. Um ausführliche Informationen über die Verwendung von Parallel.For und von Parallel.ForEach, laden Sie das Dokument Muster für parallele Programmierung: Verstehen und parallele Muster mit .NET Framework 4 wurde herunter. Im folgenden Codebeispiel werden eine einfache foreach-Schleife und deren parallele Entsprechung dargestellt.

Hinweis Hinweis

In dieser Dokumentation werden Delegaten in TPL mithilfe von Lambda-Ausdrücken definiert. Falls Sie nicht mit der Verwendung von Lambda-Ausdrücken in C# oder Visual Basic vertraut sind, finden Sie entsprechende Informationen unter Lambda-Ausdrücke in PLINQ und TPL.


// Sequential version            
foreach (var item in sourceCollection)
{
    Process(item);
}

// Parallel equivalent
Parallel.ForEach(sourceCollection, item => Process(item));


Wenn eine parallele Schleife ausgeführt wird, partitioniert die TPL die Datenquelle, sodass die Schleife mehrere Teile gleichzeitig bearbeiten kann. Im Hintergrund partitioniert der Taskplaner die Aufgabe basierend auf den Systemressourcen und der Arbeitsauslastung. Nach Möglichkeit verteilt der Planer die Arbeit auf mehrere Threads und Prozessoren, wenn die Arbeitsauslastung unausgewogen ist.

Hinweis Hinweis

Sie können auch einen eigenen, benutzerdefinierten Partitionierer oder Planer angeben. Weitere Informationen finden Sie unter Benutzerdefinierte Partitionierer für PLINQ und TPL und Taskplaner.

Sowohl die Parallel.For-Methode als auch die Parallel.ForEach-Methode verfügen über mehrere Überladungen, die es Ihnen ermöglichen, die Schleifenausführung anzuhalten bzw. zu unterbrechen, den Zustand der Schleife in anderen Threads zu überwachen, den lokalen Threadzustand beizubehalten, lokale Threadobjekte abzuschließen, den Grad der Parallelität zu steuern usw. Die Hilfstypen, die diese Funktionalität ParallelLoopState, ParallelOptions, ParallelLoopResult, CancellationToken und CancellationTokenSource aktivieren.

Weitere Informationen finden Sie unter Muster der parallelen Programmierung.

Datenparallelismus mit deklarativer oder abfrageähnlicher Syntax wird von PLINQ unterstützt. Weitere Informationen finden Sie unter Paralleles LINQ (PLINQ).

Titel

Beschreibung

Gewusst wie: Schreiben einer einfachen Parallel.For-Schleife

Beschreibt, wie eine For-Schleife über jedes Array oder indizierbare IEnumerable<T>-Quellauflistung geschrieben wird.

Gewusst wie: Schreiben einer einfachen Parallel.ForEach-Schleife

Beschreibt, wie eine ForEach-Schleife über jede IEnumerable<T>-Quellauflistung geschrieben wird.

Gewusst wie: Beenden oder Verlassen einer Parallel.For-Schleife

Beschreibt, wie eine parallele Schleife beendet oder unterbrochen wird, damit alle Threads von der Aktion informiert werden.

Gewusst wie: Schreiben einer Parallel.For-Schleife mit lokalen Threadvariablen

Beschreibt, wie eine For-Schleife geschrieben wird, in der jeder Thread eine private Variable beibehält, die für alle anderen Threads nicht sichtbar ist, und wie die Ergebnisse von allen Threads synchronisiert werden, wenn die Schleife abgeschlossen wird.

Gewusst wie: Schreiben einer Parallel.ForEach-Schleife mit lokalen Threadvariablen

Beschreibt, wie eine ForEach-Schleife geschrieben wird, in der jeder Thread eine private Variable beibehält, die für alle anderen Threads nicht sichtbar ist, und wie die Ergebnisse von allen Threads synchronisiert werden, wenn die Schleife abgeschlossen wird.

Gewusst wie: Abbrechen einer Parallel.For-Schleife oder einer ForEach-Schleife

Beschreibt, wie eine parallele Schleife mit einem System.Threading.CancellationToken-Objekt abgebrochen wird

Gewusst wie: Beschleunigen von kurzen Schleifenkörpern

Beschreibt eine Möglichkeit zur Beschleunigung der Ausführung, wenn ein Schleifenkörper sehr klein ist.

Task Parallel Library (TPL)

Übersicht über die Task Parallel Library.

Parallele Programmierung in .NET Framework

Einführung in parallele Programmierung in .NET Framework

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.