Heim > Backend-Entwicklung > C++ > Wie kann ich die gleichzeitige Aufgabenausführung mithilfe von C#-Aufgaben auf 10 beschränken?

Wie kann ich die gleichzeitige Aufgabenausführung mithilfe von C#-Aufgaben auf 10 beschränken?

Patricia Arquette
Freigeben: 2024-12-30 06:52:10
Original
347 Leute haben es durchsucht

How Can I Limit Concurrent Task Execution to 10 using C# Tasks?

Parallelitätsmanagement mit Aufgaben: Beschränkung der gleichzeitigen Ausführung

In Ihrem Szenario möchten Sie einen Satz von 100 Aufgaben gleichzeitig ausführen, aber nur zulassen Es können maximal 10 Aufgaben gleichzeitig ausgeführt werden. Dazu gehört die effektive Verwaltung der Parallelität, um eine ordnungsgemäße Aufgabenausführung und Ressourcennutzung sicherzustellen.

Um diese Anforderung mithilfe von Aufgaben zu erfüllen, können Sie den folgenden Ansatz verwenden:

// Define a SemaphoreSlim to limit concurrent tasks to 10
SemaphoreSlim maxThread = new SemaphoreSlim(10);

// Iterate through the tasks
for (int i = 0; i < 115; i++)
{
    // Wait for the SemaphoreSlim to allow a new task to execute
    maxThread.Wait();

    // Create a new task and schedule it
    Task.Factory.StartNew(() =>
    {
        // Perform the task's operation
    }, TaskCreationOptions.LongRunning)

    // Release the SemaphoreSlim when the task completes
    .ContinueWith((task) => maxThread.Release());
}
Nach dem Login kopieren

In dieser Implementierung:

  1. Ein SemaphoreSlim mit dem Namen maxThread wird mit einer anfänglichen Anzahl von 10 erstellt, was die maximale Anzahl gleichzeitiger Aufgaben darstellt zulässig.
  2. Die Schleife durchläuft die 115 Aufgaben.
  3. Innerhalb jeder Iteration wartet der Code darauf, dass SemaphoreSlim eine Genehmigung erhält, um sicherzustellen, dass nicht mehr als 10 Aufgaben gleichzeitig ausgeführt werden.
  4. Sobald eine Genehmigung erworben wurde, wird mit Task.Factory.StartNew eine neue Aufgabe erstellt. Die Option TaskCreationOptions.LongRunning gibt an, dass die Ausführung der Aufgabe länger dauern kann.
  5. Mit ContinueWith wird der Aufgabe eine Fortsetzung hinzugefügt. Wenn die Aufgabe abgeschlossen ist, gibt die Fortsetzung die Genehmigung für SemaphoreSlim frei, sodass eine andere wartende Aufgabe mit der Ausführung beginnen kann.

Dieser Ansatz stellt sicher, dass jeweils nur 10 Aufgaben gleichzeitig ausgeführt werden, wodurch Parallelität effektiv verwaltet und Ressourcen eingespart werden Hunger.

Das obige ist der detaillierte Inhalt vonWie kann ich die gleichzeitige Aufgabenausführung mithilfe von C#-Aufgaben auf 10 beschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage