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.
struct IUMSThreadProxy : public IThreadProxy;
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. |
IUMSThreadProxy
En-tête : concrtrm.h
Espace de noms : concurrency
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;
Nouvelle profondeur de la région critique. Les régions critiques sont réentrantes.
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;
Nouvelle profondeur de la région hyper-critique. Les régions hyper-critiques sont réentrantes.
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.
Appelé pour quitter une région critique.
virtual int ExitCriticalRegion() = 0;
Nouvelle profondeur de la région critique. Les régions critiques sont réentrantes.
Appelé pour quitter une région hyper-critique.
virtual int ExitHyperCriticalRegion() = 0;
Nouvelle profondeur de la région hyper-critique. Les régions hyper-critiques sont réentrantes.
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;
Type de région critique dans laquelle se trouve le proxy de thread.