Heim >Backend-Entwicklung >C++ >Wie können wir TPL -Aufgaben effektiv stornieren?

Wie können wir TPL -Aufgaben effektiv stornieren?

DDD
DDDOriginal
2025-01-25 02:26:171016Durchsuche

How Can We Effectively Cancel TPL Tasks?

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 CancellationTokens. 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!

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