2021年4月19日 星期一

.NET System.Threading.Tasks - 情境

相對於 Thread 類別的 worker 概念,Task 就是工作本身
看起來也就是流程、函數一樣概念,所以 Action、Func 也常跟 Task 一起出現
但是 Task 作用於非同步,則是多了可延遲執行的相關特性
也很自然地跟 async/await 語法整合在一起

Task 執行工作的時候沒有新建 Thread,是使用 ThreadPool 的 Thread


Task 的屬性則主要跟工作目前的狀態相關。
比較特別的是 Task.Factory 提供了建立 Task 與 Task<TResult> 的功能

使用上主要則涵蓋了以下情境,並提供沒有回傳值 Task + Action 與有回傳值 Task<TResult> + Func 的版本

  • Task 建立
  • 基於 CancellationToken 的取消機制 (Thread 也支援)
  • 單一 Task 的執行、等待
  • 與其他 Task 合作時的串接、等待、觸發機制
  • 較低階的排程方式、Awaiter/Awatiable 機制

同樣位於 System.Threading.Tasks 中,還有一個特別的 Parallel 類別
則是提供了整合數字範圍、陣列、IEnumerable、OrderablePartitioner、Partitioner 的平行迴圈機制

沒有留言:

張貼留言