IScheduler::RemoveVirtualProcessors Method

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

virtual void RemoveVirtualProcessors(
   _In_reads_(count) IVirtualProcessorRoot ** ppVirtualProcessorRoots,
   unsigned int count
) =0;

Parameters

  • ppVirtualProcessorRoots
    An array of IVirtualProcessorRoot interfaces representing the virtual processor roots to be removed.

  • count
    The number of IVirtualProcessorRoot interfaces in the array.

Remarks

The Resource Manager invokes the RemoveVirtualProcessors method to take back a set of virtual processor roots from a scheduler. The scheduler is expected to invoke the Remove method on each interface when it is done with the virtual processor roots. Do not use an IVirtualProcessorRoot interface once you have invoked the Remove method on it.

The parameter ppVirtualProcessorRoots points to an array of interfaces. Among the set of virtual processor roots to be removed, the roots have never been activated can be returned immediately using the Remove method. The roots that have been activated and are either executing work, or have been deactivated and are waiting for work to arrive, should be returned asynchronously. The scheduler must make every attempt to remove the virtual processor root as quickly as possible. Delaying removal of the virtual processor roots may result in unintentional oversubscription within the scheduler.

Requirements

Header: concrtrm.h

Namespace: concurrency

See Also

Reference

IScheduler Structure

IVirtualProcessorRoot Structure

IScheduler::RemoveVirtualProcessors Method