首頁 > 後端開發 > C++ > 何時應處置 CancellationTokenSource?

何時應處置 CancellationTokenSource?

Patricia Arquette
發布: 2025-01-19 11:42:09
原創
800 人瀏覽過

When Should You Dispose of a CancellationTokenSource?

正確釋放 CancellationTokenSource 資源

在.NET中,CancellationTokenSource 用於管理執行緒取消,需要明確釋放以避免資源外洩。雖然MSDN範例中經常省略此步驟,但正確管理資源至關重要。

為什麼需要釋放 CancellationTokenSource?

  • CancellationTokenSource 使用非託管資源(例如,核心事件),必須清理這些資源以防止記憶體洩漏。
  • 垃圾回收器 (GC) 不會自動釋放 CancellationTokenSource 對象,因為它沒有終結器。

正確的釋放方法

  • using 語句: 如果你正在等待並行任務完成,可以使用 using 語句自動釋放令牌來源。
  • ContinueWith:ContinueWith 方法附加到任務中,該方法在令牌來源上呼叫 Dispose()
  • 明確釋放: 在並行任務或 PLINQ 查詢完成後,手動在令牌來源上呼叫 Dispose()

可重複使用性

CancellationTokenSource 不可重複使用。啟動任務或 PLINQ 查詢後,請建立新的令牌來源。不支援重置 IsCancellationRequestedToken

推薦策略

為了有效管理多個 CancellationTokenSource 實例,請考慮以下方法:

  • 盡可能使用 using 語句(例如,等待並行任務時)。
  • 對於長時間運行的任務,採用一種模式:建立令牌來源,將連結的令牌傳遞給任務,並在任務完成後明確釋放來源(例如,使用ContinueWith 或明確釋放) 。
  • 確保所有可能導致取消的程式碼路徑都釋放令牌來源,以避免記憶體洩漏。

以上是何時應處置 CancellationTokenSource?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板