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.

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


An array of IVirtualProcessorRoot interfaces associated with the hardware threads on which other schedulers have become busy.


The number of IVirtualProcessorRoot interfaces in the array.

It is possible for a particular hardware thread to be assigned to multiple schedulers at the same time. One reason for this could be that there are not enough hardware threads on the system to satisfy the minimum concurrency for all schedulers, without sharing resources. Another possibility is that resources are temporarily assigned to other schedulers when the owning scheduler is not using them, by way of all its virtual processor roots on that hardware thread being deactivated.

The subscription level of a hardware thread is denoted by the number of subscribed threads and activated virtual processor roots associated with that hardware thread. From a particular scheduler's point of view, the external subscription level of a hardware thread is the portion of the subscription other schedulers contribute to. Notifications that resources are externally busy are sent to a scheduler when the external subscription level for a hardware thread moves from zero into positive territory.

Notifications via this method are only sent to schedulers that have a policy where the value for the MinConcurrency policy key is equal to the value for the MaxConcurrency policy key. For more information on scheduler policies, see SchedulerPolicy.

A scheduler that qualifies for notifications gets a set of initial notifications when it is created, informing it whether the resources it was just assigned are externally busy or idle.

Header: concrtrm.h

Namespace: Concurrency

Community Additions