Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Представляет абстракцию для текущего планировщика, связанного с вызывающим контекстом.
Синтаксис
class CurrentScheduler;
Участники
Открытые методы
| Имя | Описание |
|---|---|
| Создать | Создает новый планировщик, поведение которого описано _Policy параметром и присоединяет его к вызывающему контексту. Созданный планировщик станет текущим планировщиком для контекста вызова. |
| CreateScheduleGroup | Перегружен. Создает новую группу расписаний в планировщике, связанной с контекстом вызова. Версия, которая принимает параметр _Placement , приводит к тому, что задачи в созданной группе расписаний будут предвзяты в сторону выполнения в расположении, указанном этим параметром. |
| Отсоединить | Отсоединяет текущий планировщик от контекста вызова и восстанавливает ранее присоединенный планировщик в качестве текущего планировщика, если он существует. После возврата этого метода контекст вызова затем управляется планировщиком, который ранее был присоединен к контексту с помощью метода CurrentScheduler::Create или метода Scheduler::Attach. |
| Get | Возвращает указатель на планировщик, связанный с контекстом вызова, также называемый текущим планировщиком. |
| GetNumberOfVirtualProcessors | Возвращает текущее число виртуальных процессоров для планировщика, связанного с контекстом вызова. |
| GetPolicy | Возвращает копию политики, с помощью которую был создан текущий планировщик. |
| Id | Возвращает уникальный идентификатор для текущего планировщика. |
| IsAvailableLocation | Определяет, доступно ли данное расположение в текущем планировщике. |
| RegisterShutdownEvent | Вызывает передачу дескриптора событий Windows в _ShutdownEvent параметре, когда планировщик, связанный с текущим контекстом, завершает работу и уничтожает себя. Когда событие инициируется, все работы, переданные планировщиком, завершены. С помощью этого метода можно зарегистрировать несколько событий завершения работы. |
| ScheduleTask | Перегружен. Планирует легкую задачу в планировщике, связанном с контекстом вызова. Упрощенная задача будет размещена в группе расписаний, определенной средой выполнения. Версия, принимающая параметр _Placement, смещает выполнение задачи в пользу указанного местоположения. |
Замечания
Если с контекстом вызова не связан планировщик (см. Планировщик), многие методы в классе CurrentScheduler приведут к привязке планировщика по умолчанию процесса. Это также может означать, что планировщик процесса по умолчанию создается во время такого вызова.
Иерархия наследования
CurrentScheduler
Требования
Заголовок: concrt.h
Пространство имен: конкурентность
Создайте
Создает новый планировщик, поведение которого описано _Policy параметром и присоединяет его к вызывающему контексту. Созданный планировщик станет текущим планировщиком для контекста вызова.
static void __cdecl Create(const SchedulerPolicy& _Policy);
Параметры
_Политика
Политика планировщика, описывающая поведение новосозданного планировщика.
Замечания
Присоединение планировщика к вызывающему контексту автоматически добавляет ссылку на планировщик.
После создания планировщика с помощью метода Create необходимо в будущем вызвать метод CurrentScheduler::Detach, чтобы дать планировщику возможность завершить работу.
Если этот метод вызывается из контекста, который уже подключен к другому планировщику, существующий планировщик запоминается как предыдущий планировщик, а созданный планировщик становится текущим планировщиком. При вызове CurrentScheduler::Detach метода в более позднюю точку предыдущий планировщик восстанавливается в качестве текущего планировщика.
Этот метод может вызывать различные исключения, включая scheduler_resource_allocation_error и invalid_scheduler_policy_value.
СоздатьГруппуРасписания
Создает новую группу расписаний в планировщике, связанной с контекстом вызова. Версия, которая принимает параметр _Placement , приводит к тому, что задачи в созданной группе расписаний будут предвзяты в сторону выполнения в расположении, указанном этим параметром.
static ScheduleGroup* __cdecl CreateScheduleGroup();
static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);
Параметры
_Размещение
Ссылка на место, где задачи в группе расписаний будут склонны к выполнению.
Возвращаемое значение
Указатель на только что созданную группу расписаний. Этот ScheduleGroup объект имеет начальное число ссылок, помещенное на него.
Замечания
В результате выполнения этого метода будет создан и/или присоединен к вызывающему контексту планировщик по умолчанию для процесса, если в данный момент никакой планировщик не связан с вызывающим контекстом.
При выполнении планирования работы с ним необходимо вызвать метод Release в группе расписаний. Планировщик уничтожит группу расписаний, когда всей работы, поставленной в очередь для нее, будет завершена.
Обратите внимание, что если вы явно создали этот планировщик, необходимо удалить все ссылки на группы расписаний перед освобождением вашей ссылки на планировщик, отсоединяя от него текущий контекст.
Отсоединить
Отсоединяет текущий планировщик от контекста вызова и восстанавливает ранее присоединенный планировщик в качестве текущего планировщика, если он существует. После возврата этого метода контекст вызова затем управляется планировщиком, который ранее был присоединен к контексту с помощью метода CurrentScheduler::Create или метода Scheduler::Attach.
static void __cdecl Detach();
Замечания
Метод Detach неявно уменьшает счётчик ссылок в планировщике.
Если в контексте вызова нет планировщика, вызов этого метода приведет к возникновению исключения scheduler_not_attached .
Вызов этого метода из контекста, который внутренне управляется планировщиком, или из контекста, присоединенного с помощью метода, отличного от Scheduler::Attach или CurrentScheduler::Create, приведет к возникновению исключения improper_scheduler_detach.
Получить
Возвращает указатель на планировщик, связанный с контекстом вызова, также называемый текущим планировщиком.
static Scheduler* __cdecl Get();
Возвращаемое значение
Указатель на планировщик, связанный с контекстом вызова (текущий планировщик).
Замечания
В результате выполнения этого метода будет создан и/или присоединен к вызывающему контексту планировщик по умолчанию для процесса, если в данный момент никакой планировщик не связан с вызывающим контекстом. Дополнительная ссылка не помещается в объект, Scheduler возвращаемый этим методом.
GetNumberOfVirtualProcessors
Возвращает текущее число виртуальных процессоров для планировщика, связанного с контекстом вызова.
static unsigned int __cdecl GetNumberOfVirtualProcessors();
Возвращаемое значение
Если планировщик связан с контекстом вызова, текущее число виртуальных процессоров для этого планировщика; в противном случае — значение -1.
Замечания
Этот метод не приведет к присоединению планировщика, если вызывающий контекст еще не связан с планировщиком.
Возвращаемое значение из этого метода является мгновенной выборкой количества виртуальных процессоров для планировщика, связанного с вызывающим контекстом. Это значение может быть устаревшим в момент возврата.
GetPolicy
Возвращает копию политики, с помощью которую был создан текущий планировщик.
static SchedulerPolicy __cdecl GetPolicy();
Возвращаемое значение
Копия политики, с помощью которой был создан текущий планировщик.
Замечания
В результате выполнения этого метода будет создан и/или присоединен к вызывающему контексту планировщик по умолчанию для процесса, если в данный момент никакой планировщик не связан с вызывающим контекстом.
Артикул
Возвращает уникальный идентификатор для текущего планировщика.
static unsigned int __cdecl Id();
Возвращаемое значение
Если планировщик связан с контекстом вызова, уникальный идентификатор для этого планировщика; в противном случае — значение -1.
Замечания
Этот метод не приведет к присоединению к планировщику, если вызывающий контекст еще не связан с планировщиком.
IsAvailableLocation
Определяет, доступно ли данное расположение в текущем планировщике.
static bool __cdecl IsAvailableLocation(const location& _Placement);
Параметры
_Размещение
Ссылка на расположение, о котором необходимо отправить запрос текущему планировщику.
Возвращаемое значение
Указание на то, доступно ли расположение, указанное параметром _Placement, в текущем планировщике.
Замечания
Этот метод не приведет к присоединению планировщика, если вызывающий контекст еще не связан с планировщиком.
Обратите внимание, что возвращаемое значение является результатом проверки доступности указанного расположения в данный момент. При наличии нескольких планировщиков динамическое управление ресурсами может добавлять или забирать ресурсы у планировщиков в любой момент. Если это произошло, доступность заданного расположения может измениться.
RegisterShutdownEvent (Регистрация события завершения работы)
Вызывает передачу дескриптора событий Windows в _ShutdownEvent параметре, когда планировщик, связанный с текущим контекстом, завершает работу и уничтожает себя. Когда событие инициируется, все работы, переданные планировщиком, завершены. С помощью этого метода можно зарегистрировать несколько событий завершения работы.
static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);
Параметры
_ShutdownEvent
Дескриптор объекта события Windows, который будет сигнализировать среде выполнения, когда планировщик, связанный с текущим контекстом, завершает работу и уничтожает себя.
Замечания
Если в контексте вызова нет планировщика, вызов этого метода приведет к возникновению исключения scheduler_not_attached .
Запланированная задача
Планирует легкую задачу в планировщике, связанном с контекстом вызова. Упрощенная задача будет размещена в группе расписаний, определенной средой выполнения. Версия, принимающая параметр _Placement, смещает выполнение задачи в пользу указанного местоположения.
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data);
static void __cdecl ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data,
location& _Placement);
Параметры
_Proc
Указатель на функцию, выполняемую для выполнения основной части легковесной задачи.
_Данные
Указатель void на данные, которые будут передаваться в качестве параметра в тело задачи.
_Размещение
Ссылка на расположение, где легковесная задача будет с большей вероятностью выполнена.
Замечания
В результате выполнения этого метода будет создан и/или присоединен к вызывающему контексту планировщик по умолчанию для процесса, если в данный момент никакой планировщик не связан с вызывающим контекстом.
См. также
Пространство имен параллелизм
Класс Scheduler
PolicyElementKey
Планировщик заданий