Ist paralleles ForEach asynchron?
Ist paralleles ForEach asynchron?

Video: Ist paralleles ForEach asynchron?

Video: Ist paralleles ForEach asynchron?
Video: Is Parallel.For/ForEach in C# actually worth it? (and how to modernize it) 2024, Kann
Anonim

Die ganze Idee dahinter Parallel . Für jeden () ist, dass Sie eine Reihe von Threads haben und jeder Thread einen Teil der Sammlung verarbeitet. Wie ihr bemerkt habt, funktioniert das nicht mit asynchron - wait, wo Sie den Thread für die Dauer des freigeben möchten asynchron Anruf. Für jeden (), die unterstützt asynchron Aufgabe ist gut.

Wie warten Sie in diesem Zusammenhang darauf, dass der parallele Foreach abgeschlossen ist?

Du musst nichts besonderes tun, Parallel . Für jeden () Wille Warten bis alle seine verzweigten Aufgaben erledigt sind Komplett . Vom aufrufenden Thread aus können Sie es als eine einzelne synchrone Anweisung behandeln und zum Beispiel in ein try/catch einschließen. Das brauchst du nicht mit Parallel.

Ist foreach ähnlich asynchron? Es ist nicht asynchron . Es blockiert. Diejenigen, die zuerst eine Sprache wie Java, C oder Python gelernt haben, bevor sie JS ausprobieren, werden verwirrt sein, wenn sie versuchen, eine willkürliche Verzögerung oder einen API-Aufruf in ihren Schleifenkörper einzufügen.

Wie geht es außerdem mit parallelem foreach weiter?

Wenn Sie Ihre Schleife in eine kompatible Definition für die Parallel . Für jeden Logik, Sie haben den Anweisungskörper schließlich zu einem Lambda gemacht. Nun, das ist eine Aktion, die von der aufgerufen wird Parallel Funktion. Also, ersetzen fortsetzen mit return und break mit Stop()- oder Break()-Anweisungen.

Ist die Aufgabe WhenAll parallel?

Die Anwendung von Wenn alles gibt eine Single zurück Aufgabe das ist erst alle fertig Aufgabe in der Sammlung ist abgeschlossen. Die Aufgaben scheinen eingelaufen zu sein parallel , aber es werden keine zusätzlichen Threads erstellt. Die Aufgaben kann in beliebiger Reihenfolge abgeschlossen werden.

Empfohlen: