Если объект режима ядра содержит структуру данных, называемую «заголовком диспетчеризации» (рис. 2.5),
то такой объект называется диспетчерским. На такие объекты пользователи ссылаются с использованием дескрипторов.
Рис. 2.5. Структура данных dispatcher_header
в диспетчерских объектах
Диспетчерскими объектами могут быть события, мьютексы, таймеры ожидания, семафоры и другие объекты, осуществляющие
синхронизацию потоков. Структура данных заголовка диспетчеризации содержит информацию о сигнальном состоянии объекта, а также
данные о потоках, которые ожидают сигнала от объекта.
Механизм диспетчерских объектов используется также таймерами, файлами, портами,
потоками и процессами. Например, в момент срабатывания таймера, при появлении в порту данных, при окончании ввода-вывода
в файл, завершении выполнения потока или процесса используемый диспетчерский объект сигнализирует всем ожидающим данные события потокам.
Для синхронизации с объектами режима ядра система Windows использует единый механизм. Для организации ожидания потоками
сразу нескольких событий Windows использует WaitForMultipleObjects, который позволяет потоку ожидать любой диспетчерский объект,
на который у потока имеется описатель. До 64 дескрипторов можно определить для WaitForMultipleObjects. А также можно указать и
значение тайм-аута. Переход потока в состояние готовности осуществляется по сигналу от любого связанного с описателем объекта или по тайм-ауту.
Для перевода ядром системы потоков в работоспособное состояние используются две разные процедуры. Все ожидающие потоки переходят
в состояние готовности, если происходит получение сигнала от объекта уведомления (notification object). Однако при использовании объектов
синхронизации (synchronization objects) работоспособность получает только первый поток, находящийся в состоянии ожидания. Объекты синхронизации
используются только реализующими примитивы блокировки диспетчерскими объектами. Только флагом в структуре данных заголовка диспетчеризации
устанавливается, что будет использоваться диспетчерскими объектами (синхронизация или уведомление).