Partager via


IThreadProxy::SwitchOut, méthode

Dissocie le contexte à partir de la racine virtuelle processeur sous-jacent.

virtual void SwitchOut(
   SwitchingProxyState switchState = Blocking
) =0;

Paramètres

  • switchState
    Indique l'état du proxy de thread qui exécute le commutateur.Le paramètre est du type SwitchingProxyState.

Notes

Utilisation SwitchOut si vous avez besoin dissocier un contexte à partir de la racine virtuelle processeur son exécution, pour une raison quelconque.Selon la valeur vous passez dans le paramètre switchState, et qu'elle s'exécute sur une racine virtuelle processeur, ou non l'appel va retourner immédiatement ou bloquer le proxy thread associé au contexte.Il est erroné d'appeler SwitchOut avec le paramètre défini Idle.Cela se traduira par une invalid_argument exception.

SwitchOutest utile lorsque vous souhaitez réduire le nombre de racines de processeur virtuel qu'a votre planificateur, car le Gestionnaire de ressources vous ait demandé pour ce faire, ou vous a demandé une racine de processeur virtuel sur-souscrits temporaire et sont effectuées avec lui.Dans ce cas, vous devez appeler la méthode IVirtualProcessorRoot::Remove à la racine de processeur virtuel, avant d'effectuer un appel à SwitchOut avec le paramètre switchState la valeur Blocking.Le proxy thread sera bloqué et il va reprendre l'exécution lorsqu'une racine de l'autre processeur virtuel dans le Planificateur n'est disponible pour l'exécuter.Le proxy de thread bloquant peut être relancé en appelant la fonction SwitchTo pour basculer sur le contexte d'exécution de ce proxy de thread.Vous pouvez également reprendre le proxy de thread, en utilisant son contexte associé pour activer une racine de processeur virtuel.Pour plus d'informations sur la façon d'effectuer cette opération, consultez IVirtualProcessorRoot::Activate.

SwitchOutpeut également être utilisé lorsque vous souhaitez réinitialiser le processeur virtuel afin qu'il peut être activé à l'avenir pendant que soit le proxy de thread de blocage ou temporairement le détachement de la racine virtuelle processeur il s'exécute sur, le Planificateur, il est en travail pour.Utilisation SwitchOut avec le paramètre switchState la valeur Blocking si vous souhaitez bloquer le proxy de thread.Il peut être repris plus tard à l'aide SwitchTo ou IVirtualProcessorRoot::Activate comme indiqué ci-dessus.Utilisation SwitchOut avec le paramètre défini Nesting lorsque vous souhaitez détacher temporairement ce proxy thread à partir de la racine virtuelle processeur il s'exécute sur, et le Planificateur de processeur virtuel est associé.L'appel de SwitchOut avec le paramètre switchState la valeur Nesting pendant son exécution sur une racine virtuelle processeur entraînera à réinitialiser la racine et le proxy de thread en cours continue à s'exécuter sans la nécessité d'une.Le proxy de thread est considéré comme ayant quitté le Planificateur jusqu'à ce qu'il appelle la IThreadProxy::SwitchOut méthode avec Blocking à un moment ultérieur.Le deuxième appel à SwitchOut avec le paramètre défini Blocking vise à rétablir le contexte dans un état bloqué afin qu'elle peut être reprise par une SwitchTo ou IVirtualProcessorRoot::Activate dans le Planificateur il détaché.Car il n'était pas exécuté sur une racine de processeur virtuel, aucune réinitialisation n'est effectuée.

Une racine réinitialisés processeur virtuel n'est pas différente à partir d'une racine virtuelle processeur neuve que votre planificateur a été accordé par le Gestionnaire de ressources.Vous pouvez l'utiliser pour l'exécution en activant ce dernier avec un contexte d'exécution à l'aide IVirtualProcessorRoot::Activate.

SwitchOut doit être appelé dans l'interface IThreadProxy qui représente le thread en cours d'exécution, sinon les résultats seront indéfinis.

Dans les bibliothèques et les en-têtes fournis avec Visual Studio 2010, cette méthode n'a pas eu un paramètre et ne pas réinitialiser la racine de processeur virtuel.Pour conserver l'ancien comportement lorsque vous mettez à niveau Visual Studio 2012, la valeur du paramètre par défaut de Blocking est fourni.

Configuration requise

En-tête : concrtrm.h

Espace de noms : accès concurrentiel

Voir aussi

Référence

IThreadProxy, structure