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


Метод ISchedulerProxy::RequestInitialVirtualProcessors

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

virtual IExecutionResource * RequestInitialVirtualProcessors(
   bool doSubscribeCurrentThread
) =0;

Параметры

  • doSubscribeCurrentThread
    Следует ли подписать текущий поток и обеспечивать его во время выделения ресурсов.

Возвращаемое значение

Интерфейс IExecutionResource для текущего потока, если параметр doSubscribeCurrentThread имеет значение true. Если это значение равняется false, метод возвращает NULL.

Заметки

Перед выполнением планировщиком любой работы, следует использовать этот метод для запроса корней виртуальный процессор из диспетчера ресурсов. Диспетчер ресурсов будут обращаться к политике планировщика с помощью IScheduler::GetPolicy и использовать значения для ключей политики MinConcurrency, MaxConcurrency и TargetOversubscriptionFactor, чтобы определить, сколько потоков оборудования назначить первоначально планировщику и сколько корней виртуального процессора создать для каждого потока оборудования. Дополнительные сведения о том, как политики планировщика используются для определения начального выделения планировщика, см. в разделе PolicyElementKey.

Диспетчер ресурсов предоставляет ресурсы планировщику, вызвав метод IScheduler::AddVirtualProcessors со списком корней виртуального процессора. Метод вызывается в качестве обратного вызова в планировщик перед тем, как этот метод возвращает.

Если планировщик запросил подписку для текущего потока, задав параметр doSubscribeCurrentThread для true, метод возвращает интерфейс IExecutionResource. Подписка должна заканчиваться в дальнейшем с помощью метода IExecutionResource::Remove .

При определении, какие аппаратные потоки выбраны, диспетчер ресурсов будет делать попытка оптимизации сходства узлов процессора. Если подписка запрашивается для текущего потока, это означает, что текущий поток планирует участвовать в работе, назначенной данному планировщику. В таком случае корней выделенные корни виртуальных процессоров находятся на узле процессора, в котором текущий поток выполняется, если это возможно.

Процесс подписки потока увеличивает уровень подписки базовой аппаратный поток на единицу. Уровень подписки уменьшается на единицу при завершении подписки. Дополнительные сведения об уровнях подписки см. в разделе IExecutionResource::CurrentSubscriptionLevel.

Требования

Заголовок: concrtrm.h

Пространство имен: concurrency

См. также

Ссылки

Структура ISchedulerProxy