內容切換

排程器會維護每個優先順序層級的可執行執行緒佇列。 這些稱為 就緒執行緒。 當處理器變成可用時,系統會執行 內容切換。 內容切換中的步驟如下:

  1. 儲存剛完成執行之執行緒的內容。
  2. 將剛完成執行的執行緒放在佇列結尾處,以取得其優先順序。
  3. 尋找包含就緒執行緒的最高優先順序佇列。
  4. 移除佇列前端的執行緒、載入其內容,然後加以執行。

下列執行緒類別不是就緒的執行緒。

  • 使用 CREATE_SUSPENDED 旗標建立的執行緒
  • 使用 SuspendThreadSwitchToThread 函式在執行期間停止的執行緒
  • 等候同步處理物件或輸入的執行緒。

在暫停或封鎖的執行緒準備好執行之前,排程器不會為其配置任何處理器時間,而不論其優先順序為何。

內容切換最常見的原因如下:

  • 時間配量已經過時。
  • 優先順序較高的執行緒已準備好執行。
  • 執行中的執行緒必須等候。

當執行中的執行緒需要等候時,它會放棄其時間配量的其餘部分。