ホームページ > バックエンド開発 > C++ > TPL タスクを効果的にキャンセルするにはどうすればよいでしょうか?

TPL タスクを効果的にキャンセルするにはどうすればよいでしょうか?

DDD
リリース: 2025-01-25 02:26:17
オリジナル
1016 人が閲覧しました

How Can We Effectively Cancel TPL Tasks?

TPLタスクの優雅な終了:キャンセルトークンの活用

並列プログラミングでは、タスクのライフサイクルを管理することが重要です。 スレッドはAbortメソッドを提供しますが、これはスレッドプールを使用するタスクパラレルライブラリ(TPL)タスクには適していません。 TPLタスクを中断するには、よりエレガントなソリューションが必要です

推奨されるアプローチには

sが含まれます。 これらのトークンは、実行タスクを実行するためのキャンセル要求を信号するメカニズムを提供します。 例で説明しましょう:CancellationToken

<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>
ログイン後にコピー
このコードは、タスクが監視するトークンをどのように作成するかを示しています。

プロパティにより、タスクはキャンセルリクエストを確認できます。 キャンセル信号を受信すると、タスクはきれいに終了し、突然の終了を避けます。 この方法により、制御された予測可能なタスク終了が保証され、CancellationTokenSourceメソッドの不安定性の可能性を大幅に改善します。

以上がTPL タスクを効果的にキャンセルするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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