Поделиться через


Параметры контекста

Планировщик поддерживает отдельные очереди исполняемых потоков для каждого уровня приоритета. Эти потоки называются готовыми потоками. Когда процессор становится доступным, система выполняет переключение контекста. Ниже приведены действия в переключении контекста.

  1. Сохраните контекст потока, который был предварительно или добровольно получен процессором.
  2. Если поток остается в состоянии готовности, поместите его в конец очереди для его уровня приоритета.
  3. Найдите очередь с высоким приоритетом, содержащую готовые потоки.
  4. Удалите поток в головной части очереди, восстановите его контекст и возобновляйте выполнение.

Следующие классы потоков не готовы.

  • Потоки, созданные с помощью флага CREATE_SUSPENDED
  • Потоки остановлены во время выполнения с помощью функции SuspendThread или SwitchToThread
  • Потоки, ожидающие объекта синхронизации или входных данных.

Пока потоки, которые приостановлены или заблокированы, становятся готовыми к выполнению, планировщик не выделяет для них время процессора независимо от их приоритета.

Наиболее распространенными причинами переключения контекста являются:

  • Срез времени истек.
  • Поток с более высоким приоритетом стал готов к выполнению.
  • Выполняющийся поток должен ждать.

Когда выполняющийся поток должен ждать, он откажется от оставшейся части времени.