Wie kann TPL Dataflow gleichzeitige asynchrone Aufgaben einschränken?
Jan 22, 2025 pm 08:22 PMVerwenden Sie TPL Dataflow, um die Anzahl gleichzeitiger asynchroner Aufgaben zu begrenzen
In diesem Artikel wird erläutert, wie Sie mit TPL Dataflow die Anzahl gleichzeitiger asynchroner Aufgaben effizient begrenzen und gleichzeitig die Vorteile von Multithreading voll ausnutzen können. Im Vergleich zum BlockingCollection
-Ansatz mit SemaphoreSlim
und ThrottleTasksAsync
bietet TPL Dataflow eine sauberere Lösung.
Durch die Konfiguration des TransformBlock
-Attributs von MaxDegreeOfParallelism
können wir direkt die maximale Anzahl gleichzeitig ausgeführter Aufgaben angeben. Fügen Sie URLs zu TransformBlock
hinzu und diese werden asynchron verarbeitet. Sobald die Verarbeitung abgeschlossen ist, stehen die Ergebnisse zur Verfügung.
var downloader = new TransformBlock<string, HttpResponse>( url => Download(url), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 50 } ); var buffer = new BufferBlock<HttpResponse>(); downloader.LinkTo(buffer); foreach (var url in urls) downloader.Post(url); downloader.Complete(); await downloader.Completion; IList<HttpResponse> responses; if (buffer.TryReceiveAll(out responses)) { // 处理结果 }
Es ist zu beachten, dass TransformBlock
Ein- und Ausgabe puffert. Daher verbinden wir es mit BufferBlock
, um zu verhindern, dass TransformBlock
blockiert, bis alle Ausgabeelemente verbraucht sind. Die BufferBlock.TryReceiveAll
-Methode wird verwendet, um alle Ergebnisse abzurufen, nachdem TransformBlock
abgeschlossen ist.
Das obige ist der detaillierte Inhalt vonWie kann TPL Dataflow gleichzeitige asynchrone Aufgaben einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
