IUMSThreadProxy, structure
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éinitulé pour les erreurs de page, les suspensions de threads, les appels de procédure asynchrone du noyau (API), et ainsi de suite, 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éinitulé pour bloquer les appels de fonction, les tentatives d’acquisition de verrous qui bloquent, les erreurs de page, les suspensions de threads, les appels de procédure asynchrone du noyau (API), 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 de régions critiques, si le code est entré dans une région critique, puis qu’une région hyper-critique est InsideHyperCriticalRegion retournée. |
Hiérarchie d'héritage
IUMSThreadProxy
Spécifications
En-tête : concrtrm.h
Espace de noms : concurrency
IUMSThreadProxy ::EnterCriticalRegion, méthode
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éinitulé pour les erreurs de page, les suspensions de threads, les appels de procédure asynchrone du noyau (API), 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éinitulé pour bloquer les appels de fonction, les tentatives d’acquisition de verrous qui bloquent, les erreurs de page, les suspensions de threads, les appels de procédure asynchrone du noyau (API), 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 hyper-critiques sont réentrantes.
Notes
Le planificateur doit être extrêmement prudent sur les méthodes qu’il appelle et ce qu’il acquiert dans de telles régions. Si le code d’une telle région bloque un verrou qui est détenu par un élément que le planificateur est responsable de la planification, il se peut que le blocage se produit.
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 hyper-critiques 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 de régions critiques, si le code est entré dans une région critique, puis qu’une région hyper-critique est InsideHyperCriticalRegion
retournée.
virtual CriticalRegionType GetCriticalRegionType() const = 0;
Valeur de retour
Type de région critique dans laquelle se trouve le proxy de thread.