Share via


Context::Unblock, méthode

Débloque le contexte et le rend exécutable.

virtual void Unblock() =0;

Notes

Il est parfaitement conforme pour un appel à la méthode Unblock de précéder un appel correspondant à la méthode Block. Tant que les appels aux méthodes Block et Unblock sont appariés correctement, le runtime gère correctement le cours normal des deux ordres. Un appel Unblock qui vient avant un appel Block annule simplement l'effet de l'appel Block.

Plusieurs exceptions peuvent être levées par cette méthode. Si un contexte essaie d'appeler la méthode Unblock elle-même, une exception context_self_unblock sera levée. Si les appels à Block et Unblock ne sont pas correctement associés (par exemple, deux appels à Unblock sont passés pour un contexte qui est en cours d'exécution), une exception context_unblock_unbalanced sera levée.

Sachez qu'il existe une période critique entre le moment où votre code publie son contexte pour qu'un autre thread puisse appeler la méthode Unblock et le moment où l'appel de méthode réel à Block est effectué. Pendant cette période, il est impératif que vous n'appeliez aucune méthode susceptible de se bloquer et de se débloquer à son tour pour des raisons qui lui sont propres (par exemple pour acquérir un verrou). Les appels aux méthodes Block et Unblock n'effectuent pas le suivi de la raison du blocage et du déblocage. Un seul objet doit être propriétaire d'une paire Block et Unblock.

Configuration requise

En-tête : concrt.h

Espace de noms d'accès : Concurrency

Voir aussi

Référence

Context, classe

Context::Block, méthode

Concepts

Planificateur de tâches (runtime d'accès concurrentiel)