相對於 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 的平行迴圈機制
沒有留言:
張貼留言