Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Abstraction d'un thread d'exécution. Si vous voulez que votre planificateur reçoive des threads UMS (User-Mode Scheduling), affectez à l'élément de stratégie du planificateur SchedulerKind la valeur UmsThreadDefault, puis implémentez l'interface IUMSScheduler. Les threads UMS sont uniquement pris en charge sur les systèmes d'exploitation 64 bits avec Windows 7 et ses versions ultérieures.
Syntaxe
struct IUMSThreadProxy : public IThreadProxy;
Membres
Méthodes publiques
| Nom | Description |
|---|---|
| IUMSThreadProxy ::EnterCriticalRegion | Appelé pour entrer dans une région critique. Dans une région critique, le planificateur n’observe pas les opérations de blocage asynchrones qui se produisent pendant la région. Cela signifie que le planificateur ne sera pas réentré pour les erreurs de page, les suspensions de threads, les appels de procédure asynchrone du noyau (APC), etc., pour un thread UMS. |
| IUMSThreadProxy ::EnterHyperCriticalRegion | Appelé pour entrer dans une région hyper-critique. Dans une région hyper-critique, le planificateur n’observe aucune opération bloquante qui se produit pendant la région. Cela signifie que le planificateur ne sera pas réentré pour les appels de fonction bloquants, les tentatives d’acquisition de verrous qui bloquent, les erreurs de page, les suspensions de threads, les appels de procédure asynchrones du noyau (APCs), et ainsi de suite, pour un thread UMS. |
| IUMSThreadProxy::ExitCriticalRegion | Appelé pour quitter une région critique. |
| IUMSThreadProxy ::ExitHyperCriticalRegion | Appelé pour quitter une région hyper-critique. |
| IUMSThreadProxy ::GetCriticalRegionType | Retourne le type de région critique dans laquelle se trouve le proxy de thread. Étant donné que les régions hyper-critiques sont un super-ensemble des régions critiques, si le code est entré dans une région critique puis dans une région hyper-critique, InsideHyperCriticalRegion sera retourné. |
Hiérarchie d'héritage
IUMSThreadProxy
Spécifications
En-tête : concrtrm.h
Espace de noms : concurrence
IUMSThreadProxy::EnterCriticalRegion Method
Appelé pour entrer dans une région critique. Dans une région critique, le planificateur n’observe pas les opérations de blocage asynchrones qui se produisent pendant la région. Cela signifie que le planificateur ne sera pas ré-entré pour les défauts de page, les suspensions de threads, les appels de procédures asynchrones du noyau (APC), et ainsi de suite, pour un thread UMS.
virtual int EnterCriticalRegion() = 0;
Valeur de retour
Nouvelle profondeur de la région critique. Les régions critiques sont réentrantes.
IUMSThreadProxy::EnterHyperCriticalRegion Méthode
Appelé pour entrer dans une région hyper-critique. Dans une région hyper-critique, le planificateur n’observe aucune opération bloquante qui se produit pendant la région. Cela signifie que le planificateur ne sera pas réentré pour les appels de fonction bloquants, les tentatives d’acquisition de verrous qui bloquent, les défauts de page, les suspensions de threads, les appels de procédure asynchrone du noyau (APC), et ainsi de suite, pour un thread UMS.
virtual int EnterHyperCriticalRegion() = 0;
Valeur de retour
Nouvelle profondeur de la région hyper-critique. Les régions hypercritiques sont réentrantes.
Notes
Le planificateur doit être extrêmement prudent concernant les méthodes qu'il appelle et les verrous qu'il acquiert dans de telles régions. Si le code dans une telle région se bloque sur un verrou détenu par quelque chose dont le planificateur est chargé, un interblocage peut se produire.
IUMSThreadProxy::ExitCriticalRegion Méthode
Appelé pour quitter une région critique.
virtual int ExitCriticalRegion() = 0;
Valeur de retour
Nouvelle profondeur de la région critique. Les régions critiques sont réentrantes.
IUMSThreadProxy ::ExitHyperCriticalRegion, méthode
Appelé pour quitter une région hyper-critique.
virtual int ExitHyperCriticalRegion() = 0;
Valeur de retour
Nouvelle profondeur de la région hyper-critique. Les régions hypercritiques sont réentrantes.
IUMSThreadProxy::GetCriticalRegionType Méthode
Retourne le type de région critique dans laquelle se trouve le proxy de thread. Étant donné que les régions hyper-critiques sont un super-ensemble des régions critiques, si le code est entré dans une région critique puis dans une région hyper-critique, InsideHyperCriticalRegion sera retourné.
virtual CriticalRegionType GetCriticalRegionType() const = 0;
Valeur de retour
Type de région critique dans laquelle se trouve le proxy de thread.