2021年4月17日 星期六

.NET System.Threading - 情境

Thread 是可以視作程式流程的執行者

所以以工作的執行者 (worker) 本身來說
可能會包括一些屬性

  • 目前是否活著(已啟動且尚未中止)
  • 名稱
  • Priority
  • 執行緒具體狀態
  • 前景或背景執行
前、背景的程式上基本沒有差異
差別就是當所有的前景執行緒都結束之後,程式就會跟著結束
可以透過 Thread.IsBackgound 設定是否為背景執行

執行緒執行工作的情境其實沒有很複雜

  1. 執行工作
  2. 休息/恢復
  3. 等待工作執行完成
  4. 取消執行 (非強制)
  5. 雖然工作未完成,但強制中斷它,不執行了 (.NET Core 不支援 Thread 等級的中斷)

另外 .NET 也提供 ThreadPool 機制,來管控執行緒支援不會被過度配置

Multi-Thread 時則是增加一些情境
  • 執行緒間的溝通
  • 執行緒間的流程管控 (限制執行)
  • 共用資源時,避免資源鎖定的同步機關

.NET 另外定義了新的 Task 類別,以工作的角度來定義平行的工作 TPL(Task Parallel Libray)

這邊比較有趣之後再補充。


沒有留言:

張貼留言