Click to Rate and Give Feedback
Collapse All/Expand All Collapse All
Visual Studio 2010 - Visual C++
IScheduler Structure

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

The core interface which every scheduler that communicates with the resource manager must implement. This is part of a two-way channel of communication between a scheduler and the resource manager. The other direction is represented by the IResourceManager and ISchedulerProxy interfaces.

struct IScheduler;

Public Methods

Name

Description

IScheduler::AddVirtualProcessors Method

Called when the resource manager is giving virtual processors to a particular scheduler. The virtual processors are identified by an array of IVirtualProcessorRoot interfaces. This call is made to grant virtual processor roots at initial allocation during the course of ISchedulerProxy::RequestInitialVirtualProcessors, and during dynamic core migration.

IScheduler::GetId Method

Returns a scheduler unique identifier for the context.

IScheduler::GetPolicy Method

Get the scheduler policy.

IScheduler::NotifyResourcesExternallyBusy Method

Called when the resource manager is made aware that the execution resources underneath the virtual processors assigned to this particular scheduler are busy (active) on other schedulers. The reason these execution resources were lent to other schedulers is usually a lack of activation on the part of this scheduler, or a system-wide oversubscription. This API is called only when a scheduler proxy was created with MinConcurrency = MaxConcurrency.

IScheduler::NotifyResourcesExternallyIdle Method

Called when the resource manager is made aware that the hardware threads underneath the virtual processors assigned to this particular scheduler are 'externally idle' once again i.e. any other schedulers that may have been using them have stopped using them. This API is called only when a scheduler proxy was created with MinConcurrency = MaxConcurrency.

IScheduler::RemoveVirtualProcessors Method

Called when the resource manager is taking away virtual processors from a particular scheduler. The scheduler should mark the supplied virtual processors such that they are removed asynchronously and return immediately. Note that the scheduler should make every attempt to remove the virtual processors as quickly as possible as the resource manager will reaffinitize threads executing upon them to other resources. Delaying stopping the virtual processors may result in unintentional oversubscription within the scheduler.

IScheduler::Statistics Method

Called by the resource manager in order to gather statistics for a given scheduler. The statistics gathered here will be used to drive dynamic feedback with the scheduler to determine when it is appropriate to assign more resources or take resources away. Note that these counts can be optimistic and do not necessarily have to reflect the current count with 100% synchronized accuracy.

Header: concrtrm.h

© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker