Heim >Backend-Entwicklung >C++ >Wie können wir TPL -Aufgaben effektiv stornieren?
Anständige Beendigung von TPL-Aufgaben: Nutzung von Stornierungstoken
Bei der parallelen Programmierung ist die Verwaltung des Lebenszyklus von Aufgaben von entscheidender Bedeutung. Während Threads eine Abort
-Methode bieten, ist diese nicht für Task Parallel Library (TPL)-Aufgaben geeignet, die einen Thread-Pool verwenden. Das Unterbrechen einer TPL-Aufgabe erfordert eine elegantere Lösung.
Der empfohlene Ansatz umfasst CancellationToken
s. Diese Token bieten einen Mechanismus zum Signalisieren von Abbruchanforderungen an laufende Aufgaben. Lassen Sie uns dies anhand eines Beispiels veranschaulichen:
<code class="language-csharp">class Program { static void Main() { var cts = new CancellationTokenSource(); CancellationToken ct = cts.Token; Task task = Task.Factory.StartNew(() => { while (!ct.IsCancellationRequested) { // Perform lengthy operation Thread.Sleep(100); } Console.WriteLine("Task cancelled gracefully."); }, ct); // Simulate some work before cancellation Thread.Sleep(3000); // Initiate cancellation cts.Cancel(); task.Wait(); // Wait for task completion Console.ReadLine(); } }</code>
Dieser Code zeigt, wie ein CancellationTokenSource
ein Token erstellt, das von der Aufgabe überwacht wird. Mit der Eigenschaft IsCancellationRequested
kann die Aufgabe prüfen, ob Stornierungsanfragen vorliegen. Beim Empfang eines Abbruchsignals wird die Aufgabe sauber beendet, wodurch ein abruptes Beenden vermieden wird. Diese Methode gewährleistet eine kontrollierte und vorhersehbare Aufgabenbeendigung, eine deutliche Verbesserung gegenüber dem Instabilitätspotenzial der Abort
Methode.
Das obige ist der detaillierte Inhalt vonWie können wir TPL -Aufgaben effektiv stornieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!