Partager via


IExecutionContext, structure

Interface avec un contexte d'exécution qui peut s'exécuter sur un processeur virtuel donné et dont le contexte peut être commuté de manière coopérative.

Syntaxe

struct IExecutionContext;

Membres

Méthodes publiques

Nom Description
IExecutionContext ::D ispatch Méthode appelée lorsqu’un proxy de thread démarre l’exécution d’un contexte d’exécution particulier. Il doit s’agir de la routine de travail principale pour votre planificateur.
IExecutionContext ::GetId Retourne un identificateur unique pour le contexte d’exécution.
IExecutionContext ::GetProxy Retourne une interface au proxy de thread qui exécute ce contexte.
IExecutionContext ::GetScheduler Retourne une interface au planificateur auquel appartient ce contexte d’exécution.
IExecutionContext ::SetProxy Associe un proxy de thread à ce contexte d’exécution. Le proxy de thread associé appelle cette méthode juste avant de commencer à exécuter la méthode du Dispatch contexte.

Notes

Si vous implémentez un planificateur personnalisé qui s’interface avec resource Manager du runtime concurrentiel, vous devez implémenter l’interface IExecutionContext . Les threads créés par Resource Manager effectuent un travail pour le compte de votre planificateur en exécutant la IExecutionContext::Dispatch méthode.

Hiérarchie d'héritage

IExecutionContext

Spécifications

En-tête : concrtrm.h

Espace de noms : concurrency

IExecutionContext ::D ispatch, méthode

Méthode appelée lorsqu’un proxy de thread démarre l’exécution d’un contexte d’exécution particulier. Il doit s’agir de la routine de travail principale pour votre planificateur.

virtual void Dispatch(_Inout_ DispatchState* pDispatchState) = 0;

Paramètres

pDispatchState
Pointeur vers l’état dans lequel ce contexte d’exécution est distribué. Pour plus d’informations sur l’état de répartition, consultez DispatchState.

IExecutionContext ::GetId, méthode

Retourne un identificateur unique pour le contexte d’exécution.

virtual unsigned int GetId() const = 0;

Valeur de retour

Identificateur entier unique.

Notes

Vous devez utiliser la méthode GetExecutionContextId pour obtenir un identificateur unique pour l’objet qui implémente l’interface IExecutionContext , avant d’utiliser l’interface comme paramètre pour les méthodes fournies par Resource Manager. Vous êtes censé retourner le même identificateur lorsque la GetId fonction est appelée.

Un identificateur obtenu à partir d’une autre source peut entraîner un comportement non défini.

IExecutionContext ::GetProxy, méthode

Retourne une interface au proxy de thread qui exécute ce contexte.

virtual IThreadProxy* GetProxy() = 0;

Valeur de retour

Interface IThreadProxy. Si le proxy de thread du contexte d’exécution n’a pas été initialisé avec un appel à SetProxy, la fonction doit retourner NULL.

Notes

Resource Manager appelle la SetProxy méthode sur un contexte d’exécution, avec une IThreadProxy interface en tant que paramètre, avant d’entrer la Dispatch méthode sur le contexte. Vous êtes censé stocker cet argument et le retourner sur les appels vers GetProxy().

IExecutionContext ::GetScheduler, méthode

Retourne une interface au planificateur auquel appartient ce contexte d’exécution.

virtual IScheduler* GetScheduler() = 0;

Valeur de retour

Interface IScheduler.

Notes

Vous devez initialiser le contexte d’exécution avec une interface valide IScheduler avant de l’utiliser comme paramètre pour les méthodes fournies par Resource Manager.

IExecutionContext ::SetProxy, méthode

Associe un proxy de thread à ce contexte d’exécution. Le proxy de thread associé appelle cette méthode juste avant de commencer à exécuter la méthode du Dispatch contexte.

virtual void SetProxy(_Inout_ IThreadProxy* pThreadProxy) = 0;

Paramètres

pThreadProxy
Interface du proxy de thread sur le point d’entrer la Dispatch méthode dans ce contexte d’exécution.

Notes

Vous êtes censé enregistrer le paramètre pThreadProxy et le retourner sur un appel à la GetProxy méthode. Resource Manager garantit que le proxy de thread associé au contexte d’exécution ne changera pas pendant que le proxy de thread exécute la Dispatch méthode.

Voir aussi

accès concurrentiel Namespace
IScheduler, structure
IThreadProxy, structure