ホームページ > バックエンド開発 > C++ > CancelTokenSource をいつ破棄する必要があるか?

CancelTokenSource をいつ破棄する必要があるか?

Patricia Arquette
リリース: 2025-01-19 11:42:09
オリジナル
825 人が閲覧しました

When Should You Dispose of a CancellationTokenSource?

CancelTokenSource リソースを正しく解放します

.NET では、CancellationTokenSource はスレッドのキャンセルを管理するために使用され、リソース リークを避けるために明示的に解放される必要があります。この手順は MSDN の例では省略されることがよくありますが、リソースを正しく管理することが重要です。

CancelTokenSource を解放する必要があるのはなぜですか?

  • CancellationTokenSource メモリ リークを防ぐためにクリーンアップする必要があるアンマネージ リソース (カーネル イベントなど) を使用します。
  • ガベージ コレクター (GC) は、ファイナライザーを持たないため、CancellationTokenSource オブジェクトを自動的に解放しません。

正しいリリース方法

  • using ステートメント: 並列タスクが完了するのを待っている場合は、using ステートメントを使用してトークン ソースを自動的に解放できます。
  • ContinueWith: トークン ソースで ContinueWith を呼び出すタスクに Dispose() メソッドをアタッチします。
  • 明示的なリリース: 並列タスクまたは PLINQ クエリが完了した後、トークン ソースで Dispose() を手動で呼び出します。

再利用性

CancellationTokenSource は再利用できません。タスクまたは PLINQ クエリを開始した後、新しいトークン ソースを作成します。 IsCancellationRequestedToken のリセットはサポートされていません。

推奨戦略

複数の CancellationTokenSource インスタンスを効率的に管理するには、次の点を考慮してください:

  • 可能な限り using ステートメントを使用します (並列タスクを待機する場合など)。
  • 長時間実行されるタスクの場合は、トークン ソースを作成し、チェーンされたトークンをタスクに渡し、タスクの完了時にソースを明示的に解放する (ContinueWith または明示的な解放を使用するなど) というパターンを採用します。
  • メモリ リークを避けるために、キャンセルにつながる可能性のあるすべてのコード パスがトークン ソースを解放していることを確認します。

以上がCancelTokenSource をいつ破棄する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート