Параметры контекста
Планировщик поддерживает очередь исполняемых потоков для каждого уровня приоритета. Они известны как готовые потоки. Когда процессор становится доступным, система выполняет переключение контекста. Ниже приведены действия в переключении контекста.
- Сохраните контекст потока, который только что завершил выполнение.
- Поместите поток, который только что завершил выполнение в конце очереди для его приоритета.
- Найдите очередь с высоким приоритетом, содержащую готовые потоки.
- Удалите поток в голове очереди, загрузите его контекст и выполните его.
Следующие классы потоков не готовы.
- Потоки, созданные с помощью флага CREATE_SUSPENDED
- Потоки остановлены во время выполнения с помощью функции приостановки приостановки или SwitchToThread
- Потоки, ожидающие объекта синхронизации или входных данных.
Пока потоки, которые приостановлены или заблокированы, становятся готовыми к выполнению, планировщик не выделяет для них время процессора независимо от их приоритета.
Наиболее распространенными причинами переключения контекста являются:
- Срез времени истек.
- Поток с более высоким приоритетом стал готов к выполнению.
- Выполняющийся поток должен ждать.
Когда выполняющийся поток должен ждать, он откажется от оставшейся части времени.