Share via


IScheduler Structure

An interface to an abstraction of a work scheduler. The Concurrency Runtime's Resource Manager uses this interface to communicate with work schedulers.

struct IScheduler;

Members

Public Methods

Name

Description

IScheduler::AddVirtualProcessors Method

Provides a scheduler with a set of virtual processor roots for its use. Each IVirtualProcessorRoot interface represents the right to execute a single thread that can perform work on behalf of the scheduler.

IScheduler::GetId Method

Returns a unique identifier for the scheduler.

IScheduler::GetPolicy Method

Returns a copy of the scheduler's policy. For more information on scheduler policies, see SchedulerPolicy.

IScheduler::NotifyResourcesExternallyBusy Method

Notifies this scheduler that the hardware threads represented by the set of virtual processor roots in the array ppVirtualProcessorRoots are now being used by other schedulers.

IScheduler::NotifyResourcesExternallyIdle Method

Notifies this scheduler that the hardware threads represented by the set of virtual processor roots in the array ppVirtualProcessorRoots are not being used by other schedulers.

IScheduler::RemoveVirtualProcessors Method

Initiates the removal of virtual processor roots that were previously allocated to this scheduler.

IScheduler::Statistics Method

Provides information related to task arrival and completion rates, and change in queue length for a scheduler.

Remarks

If you are implementing a custom scheduler that communicates with the Resource Manager, you should provide an implementation of the IScheduler interface. This interface is one end of a two-way channel of communication between a scheduler and the Resource Manager. The other end is represented by the IResourceManager and ISchedulerProxy interfaces which are implemented by the Resource Manager.

Inheritance Hierarchy

IScheduler

Requirements

Header: concrtrm.h

Namespace: concurrency

See Also

Reference

concurrency Namespace

PolicyElementKey Enumeration

SchedulerPolicy Class

IExecutionContext Structure

IThreadProxy Structure

IVirtualProcessorRoot Structure

IResourceManager Structure