Heim >Backend-Entwicklung >C++ >Wann sollten Sie eine CancellationTokenSource entsorgen?

Wann sollten Sie eine CancellationTokenSource entsorgen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-19 11:42:09820Durchsuche

When Should You Dispose of a CancellationTokenSource?

Die CancellationTokenSource-Ressource korrekt freigeben

In .NET wird CancellationTokenSource zum Verwalten des Thread-Abbruchs verwendet und muss explizit freigegeben werden, um Ressourcenlecks zu vermeiden. Obwohl dieser Schritt in MSDN-Beispielen häufig weggelassen wird, ist die korrekte Verwaltung der Ressourcen von entscheidender Bedeutung.

Warum müssen Sie CancellationTokenSource freigeben?

  • CancellationTokenSource Verwenden Sie nicht verwaltete Ressourcen (z. B. Kernel-Ereignisse), die bereinigt werden müssen, um Speicherlecks zu verhindern.
  • Der Garbage Collector (GC) gibt das CancellationTokenSource-Objekt nicht automatisch frei, da es keinen Finalizer hat.

Korrekte Freigabemethode

  • using-Anweisung: Wenn Sie auf den Abschluss einer parallelen Aufgabe warten, können Sie die using-Anweisung verwenden, um die Tokenquelle automatisch freizugeben.
  • ContinueWith: Hängen Sie eine ContinueWith-Methode an die Aufgabe an, die Dispose() für die Tokenquelle aufruft.
  • Explizite Freigabe: Rufen Sie Dispose() manuell für die Tokenquelle auf, nachdem die parallele Aufgabe oder PLINQ-Abfrage abgeschlossen ist.

Wiederverwendbarkeit

CancellationTokenSource kann nicht wiederverwendet werden. Erstellen Sie nach dem Starten einer Aufgabe oder PLINQ-Abfrage eine neue Tokenquelle. Das Zurücksetzen von IsCancellationRequested und Token wird nicht unterstützt.

Empfohlene Strategien

Um mehrere CancellationTokenSource Instanzen effizient zu verwalten, beachten Sie Folgendes:

  • Verwenden Sie using-Anweisungen wann immer möglich (z. B. beim Warten auf parallele Aufgaben).
  • Übernehmen Sie für Aufgaben mit langer Laufzeit ein Muster: Erstellen Sie eine Token-Quelle, übergeben Sie das verkettete Token an die Aufgabe und geben Sie die Quelle explizit frei, wenn die Aufgabe abgeschlossen ist (z. B. mit ContinueWith oder expliziter Freigabe).
  • Stellen Sie sicher, dass alle Codepfade, die zu einem Abbruch führen könnten, die Tokenquelle freigeben, um Speicherlecks zu vermeiden.

Das obige ist der detaillierte Inhalt vonWann sollten Sie eine CancellationTokenSource entsorgen?. 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