首頁 >後端開發 >C++ >如何有效取消TPL任務?

如何有效取消TPL任務?

DDD
DDD原創
2025-01-25 02:26:171023瀏覽

How Can We Effectively Cancel TPL Tasks?

TPL任務的優雅終止:利用取消令牌

在平行程式設計中,管理任務的生命週期至關重要。 雖然執行緒提供>方法,但這並不適用於使用執行緒池的任務並行庫(TPL)任務。 中斷TPL任務需要更優雅的解決方案。

建議的方法涉及Abort>。 這些令牌為運行任務提供了信令取消請求的機制。 讓我們用一個例子來說明:

CancellationToken此程式碼示範了A

如何建立任務監視的令牌。
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn