Heim > Backend-Entwicklung > C++ > Wie kann ich mit C# mehrere Aufgaben gleichzeitig mit einer begrenzten Anzahl von Threads ausführen?

Wie kann ich mit C# mehrere Aufgaben gleichzeitig mit einer begrenzten Anzahl von Threads ausführen?

Susan Sarandon
Freigeben: 2025-01-02 15:08:38
Original
617 Leute haben es durchsucht

How Can I Execute Multiple Tasks Concurrently with a Limited Number of Threads Using C#?

Aufgaben gleichzeitig mit begrenzten Threads ausführen

Problem:

Angenommen, Sie haben eine Reihe von Aufgaben, die nacheinander ausgeführt werden müssen, wobei maximal X Aufgaben gleichzeitig ausgeführt werden dürfen. Traditionell wurde ThreadPool.QueueUserWorkItem() für solche Aufgaben verwendet, aber es wird heute als suboptimaler Ansatz angesehen.

Lösung mit Aufgaben:

Um diese Parallelitätsbeschränkung mit zu erreichen Für Aufgaben können wir ein SemaphoreSlim-Objekt verwenden, um die Anzahl der verfügbaren Threads zu verwalten. Hier ist ein Codeausschnitt, der den Ansatz demonstriert:

SemaphoreSlim maxThread = new SemaphoreSlim(10);

for (int i = 0; i < 115; i++)
{
    maxThread.Wait();
    Task.Factory.StartNew(() =>
        {
            // Your task implementation
        }, TaskCreationOptions.LongRunning)
    .ContinueWith((task) => maxThread.Release());
}
Nach dem Login kopieren

So funktioniert der Code:

  • SemaphoreSlim-Initialisierung: Ein SemaphoreSlim wird mit einer maximalen Thread-Anzahl initialisiert von 10, was die Ausführung von bis zu 10 Aufgaben ermöglicht gleichzeitig.
  • Aufgabenausführung: Für jede auszuführende Aufgabe wird die Wait()-Methode des Semaphors aufgerufen, die blockiert, bis ein Thread verfügbar wird. Sobald ein Thread frei ist, wird mit Task.Factory.StartNew() eine neue Aufgabe gestartet.
  • Aufgabenabschluss: Nach Abschluss jeder Aufgabe wird die an die Aufgabe angehängte ContinueWith()-Methode freigegeben Der Thread, der durch Aufrufen der Release()-Methode des Semaphors verwendet wird.
  • Sequentielle Ausführung: Wegen der begrenzten Durch das Semaphor erzwungene Thread-Verfügbarkeit werden Aufgaben nacheinander ausgeführt, wobei maximal 10 Aufgaben gleichzeitig ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWie kann ich mit C# mehrere Aufgaben gleichzeitig mit einer begrenzten Anzahl von Threads ausführen?. 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