Partager via


IVirtualProcessorRoot::EnsureAllTasksVisible, méthode

A pour effet de rendre visibles à tous les processeurs sur le système les données stockées dans la hiérarchie de la mémoire de processeurs individuels. Il vérifie qu'une barrière de mémoire a été exécuté sur tous les processeurs avant que la méthode ne soit retournée.

virtual void EnsureAllTasksVisible(
   _Inout_ IExecutionContext *pContext
) =0;

Paramètres

  • pContext
    Contexte actuellement distribué par cette racine de processeur virtuel.

Notes

Vous pouvez trouver cette méthode utile lorsque vous souhaitez synchroniser la désactivation d'une racine de processeur virtuel avec l'ajout d'un nouveau travail dans le planificateur. Pour des raisons de performance, vous pouvez décider d'ajouter des éléments de travail à votre planificateur sans exécuter de cloisonnement de mémoire, ce qui signifie que les éléments de travail ajoutés par un thread qui s'exécute sur un processeur ne sont pas immédiatement visibles pour les autres processeurs. En utilisant cette méthode conjointement à la méthode Deactivate, vous pouvez vérifier que votre planificateur ne désactive pas toutes ses racines de processeur virtuel lorsqu'il existe des éléments de travail dans les collections de votre planificateur.

Un appel à la méthode EnsureAllTasksVisibleThe doit provenir de l'intérieur de la méthode Dispatch du contexte d'exécution avec lequel la racine de processeur virtuel a été activée en dernier. En d'autres termes, le proxy de thread qui appelle la méthode EnsureAllTasksVisible doit être celui qui s'exécute actuellement sur la racine de processeur virtuel. Le fait d'appeler la méthode sur une racine de processeur virtuel non utilisée pour l'exécution peut entraîner un comportement non défini.

invalid_argument est levé si l'argument pContext a la valeur NULL.

invalid_operation est levé si la racine de processeur virtuel n'a jamais été activée, ou l'argument pContext ne représente pas le contexte d'exécution ayant été distribué le plus récemment par cette racine de processeur virtuel.

Configuration requise

En-tête : concrtrm.h

Accès concurrentiel del'espace de noms :

Voir aussi

Référence

IVirtualProcessorRoot, structure

IVirtualProcessorRoot::Deactivate, méthode