Thread 是可以視作程式流程的執行者
所以以工作的執行者 (worker) 本身來說
可能會包括一些屬性
- 目前是否活著(已啟動且尚未中止)
- 名稱
- Priority
- 執行緒具體狀態
- 前景或背景執行
前、背景的程式上基本沒有差異
差別就是當所有的前景執行緒都結束之後,程式就會跟著結束
差別就是當所有的前景執行緒都結束之後,程式就會跟著結束
可以透過 Thread.IsBackgound 設定是否為背景執行
執行緒執行工作的情境其實沒有很複雜
- 執行工作
- 休息/恢復
- 等待工作執行完成
- 取消執行 (非強制)
- 雖然工作未完成,但強制中斷它,不執行了 (.NET Core 不支援 Thread 等級的中斷)
另外 .NET 也提供 ThreadPool 機制,來管控執行緒支援不會被過度配置
Multi-Thread 時則是增加一些情境
- 執行緒間的溝通
- 執行緒間的流程管控 (限制執行)
- 共用資源時,避免資源鎖定的同步機關
.NET 另外定義了新的 Task 類別,以工作的角度來定義平行的工作 TPL(Task Parallel Libray)
這邊比較有趣之後再補充。
沒有留言:
張貼留言