Process
Windows 系統使用 Process 作為應用程式的基本單位,但因為共用 CPU,所以只有一個 CPU 且忙碌就會導致卡死
Thread
Windows 系統用來虛擬化 CPU 的概念,會用來切割並分配 CPU
每個應用程式運行時,會有一個主執行緒(main thread)
創建 Thread 的成本
創建 Thread 會需要最低成本的記憶體與時間分配來建置環境
Context Switch 工作執行到一半需要分配給別的 thread 時,需要暫存當前的內容,所以增加了儲存跟讀取的成本
執行優先順序
Windows 有 32 個等級,Windows 啟動時,會分配給自己一個優先等級最高的 0 執行緒,或稱零頁執行緒(zero page thread)
為了簡化優先設定問題,Process 提供 6種
- RealTime (即時)
- High
- Above Normal
- Normal
- Below Normal
- Idle (閒置)
var p = System.Diagnostics.Process.GetCurrentProcess(); p.PriorityClass = ProcessPriorityClass.Normal;
Thread :
Net CLR 保留了 Idle 與 Time-Critical 給自己,故 Thread 沒有 Idle 與 Time-Critical