Parallele Ausführung gemischter AufgabenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Parallele Ausführung gemischter Aufgaben

Post by Anonymous »

Ich habe ~ 10000 Objekte vom Typ System.text.json.jsondocument. Für jedes parallele JSondocument muss ich die folgenden Schritte in der Reihenfolge ausführen. /> Speichern Sie den konvertierten JsonNode in eine Datenstruktur (möglicherweise einen gleichzeitigen Taschen) < /li>
< />
Jetzt, da ich ~ 10000 Dokumente habe, möchte ich diese Dokumente parallel verarbeiten und den oben beschriebenen Fluss anwenden. Das Problem ist Schritt 2 des Flusses. Die Abfolge der Aufgaben, die auf den zweiten Schritt angewendet werden würden, haben unterschiedliche Eigenschaften: Einige von ihnen sind sehr klein und schnell, einige sind schwere CPU gebunden und einige sind IO gebunden. Zum Beispiel könnte Schritt 2 die folgenden Anrufe haben (dies ist nur ein Beispiel, ich verwende ActivatorUtilities.Createinstance, um dynamische Aufgaben in der Laufzeit abzurufen). < /P>
await Task1(doc); // calls an API and updates doc
await Task2(doc); // make some heavy string manipulations to doc's properties and updates it. This returns a Task.CompletedTask.
< /code>
wobei < /p>
// Task1.cs
public class Task1 : ITask
{
public async Task RunAsync(JsonNode doc)
{
// call an API
// update doc's properties
}
}

// Task2.cs
// this also returns Task and can be awaited to make ITask uniform
public class Task2 : ITask
{
public Task RunAsync(JsonNode doc)
{
// heavy string/regex manipulations
// update doc's properties
return Task.CompletedTask;
}
}
< /code>
Wie ich es verstehe, habe ich diese parallelen Optionen. Bei CPU -Aufgaben? < /li>
TPL DataFlow: Jetzt mag ich diese Option. Ich denke, es kann eine gleichzeitige und parallele Ausführung bewältigen, und es scheint überlappende Ausführungen zwischen Blöcken zu unterstützen. Die einzigen Probleme sind, wenn dies übertrieben ist, was ich versuche zu tun, und ich habe keine Ahnung, wie ich Schritt2 implementieren kann. < /Li>
< /ul>
Kann mir jemand helfen? Denken ich das richtig durch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post