Heim >Backend-Entwicklung >C++ >Wie kann man gleichzeitige Aufgaben in C# einschränken?

Wie kann man gleichzeitige Aufgaben in C# einschränken?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 04:08:10455Durchsuche

How to Limit Concurrent Tasks in C#?

Einschränken gleichzeitiger Aufgaben in C#

Bei der Multithread- und asynchronen Programmierung kann die Steuerung der Anzahl paralleler Aufgaben die Leistung verbessern und die Stabilität gewährleisten. In dieser Frage wird untersucht, wie die maximale Anzahl gleichzeitiger Aufgaben in C# begrenzt werden kann.

Begrenzung der Parallelität

Der bereitgestellte Codeblock veranschaulicht die Erstellung einer neuen Aufgabe für jede Eingabenachricht . Dieser Ansatz kann zu einer übermäßigen Ressourcenauslastung führen, wenn die Nachrichtenanzahl groß ist. Um die Parallelität einzuschränken, sollten Sie die Verwendung von Parallel.ForEach mit MaxDegreeOfParallelism in Betracht ziehen.

Parallel.ForEach(messages, new ParallelOptions { MaxDegreeOfParallelism = 10},
msg =>
{
     // logic
     Process(msg);
});

Durch die Angabe von MaxDegreeOfParallelism als 10 werden bis zu 10 Nachrichten gleichzeitig verarbeitet, wodurch die Ressourcenbelastung reduziert wird.

Wartung Reihenfolge

Dieser Ansatz ist jedoch keine Garantie Nachrichtenverarbeitung in der gleichen Reihenfolge wie die ursprüngliche Sammlung. Um die Reihenfolge sicherzustellen, verwenden Sie SequentialQuery aus der Parallel LINQ-Bibliothek:

var processedMessages = messages.AsParallel()
    .AsOrdered()  // Preserves order
    .Select(msg => Process(msg))
    .ToList(); // Forces execution

Dadurch wird sichergestellt, dass Nachrichten in derselben Reihenfolge wie die Eingabesammlung verarbeitet werden, während gleichzeitig die Parallelität für Effizienz genutzt wird.

Das obige ist der detaillierte Inhalt vonWie kann man gleichzeitige Aufgaben in C# einschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn