Nouveautés des processus et des threads

Windows 7 et Windows Server 2008 R2 incluent les nouveaux éléments de programmation suivants pour les processus et les threads.

Nouvelles fonctionnalités

Les versions 64 bits de Windows 7 et Windows Server 2008 R2 prennent en charge plus de 64 processeurs logiques sur un seul ordinateur. Pour plus d’informations, consultez Groupes de processeurs.

La planification en mode utilisateur (UMS) est un mécanisme léger que les applications peuvent utiliser pour planifier leurs propres threads. Pour plus d’informations, consultez Planification en mode utilisateur.

Nouvelles fonctions

Les nouvelles fonctions suivantes sont utilisées avec des processeurs et des groupes de processeurs.

Fonction Description
CreateRemoteThreadEx
Crée un thread qui s’exécute dans l’espace d’adressage virtuel d’un autre processus et spécifie éventuellement des attributs étendus tels que l’affinité de groupe de processeurs.
GetActiveProcessorCount
Retourne le nombre de processeurs actifs dans un groupe de processeurs ou dans le système.
GetActiveProcessorGroupCount
Retourne le nombre de groupes de processeurs actifs dans le système.
GetCurrentProcessorNumberEx
Récupère le groupe de processeurs et le nombre du processeur logique dans lequel le thread appelant est en cours d’exécution.
GetLogicalProcessorInformationEx
Récupère des informations sur les relations des processeurs logiques et du matériel associé.
GetMaximumProcessorCount
Retourne le nombre maximal de processeurs logiques qu’un groupe de processeurs ou le système peut avoir.
GetMaximumProcessorGroupCount
Retourne le nombre maximal de groupes de processeurs que le système peut avoir.
GetNumaAvailableMemoryNodeEx
Récupère la quantité de mémoire disponible dans le nœud spécifié en tant que valeur USHORT.
GetNumaNodeNumberFromHandle
Récupère le nœud NUMA associé à l’appareil sous-jacent pour un handle de fichier.
GetNumaNodeProcessorMaskEx
Récupère le masque de processeur pour le nœud NUMA spécifié en tant que valeur USHORT.
GetNumaProcessorNodeEx
Récupère le numéro de nœud du processeur logique spécifié en tant que valeur USHORT.
GetNumaProximityNodeEx
Récupère le numéro de nœud en tant que valeur USHORT pour l’identificateur de proximité spécifié.
GetProcessGroupAffinity
Récupère l’affinité du groupe de processeurs du processus spécifié.
GetProcessorSystemCycleTime
Récupère le temps de cycle que chaque processeur du groupe spécifié a passé à exécuter des appels de procédure différée (DPCS) et interrompre les routines de service (ISR).
GetThreadGroupAffinity
Récupère l’affinité de groupe de processeurs du thread spécifié.
GetThreadIdealProcessorEx
Récupère le numéro de processeur du processeur idéal pour le thread spécifié.
QueryIdleProcessorCycleTimeEx
Récupère le temps de cycle cumulé du thread inactif sur chaque processeur logique du groupe de processeurs spécifié.
SetThreadGroupAffinity
Définit l’affinité du groupe de processeurs pour le thread spécifié.
SetThreadIdealProcessorEx
Définit le processeur idéal pour le thread spécifié et récupère éventuellement le processeur idéal précédent.

 

Les nouvelles fonctions suivantes sont utilisées avec des pools de threads.

Fonction Description
QueryThreadpoolStackInformation
Récupère la réserve de pile et les tailles de validation pour les threads dans le pool de threads spécifié.
SetThreadpoolCallbackPersistent
Spécifie que le rappel doit s’exécuter sur un thread persistant.
SetThreadpoolCallbackPriority
Spécifie la priorité d’une fonction de rappel par rapport à d’autres éléments de travail dans le même pool de threads.
SetThreadpoolStackInformation
Définit la réserve de pile et les tailles de validation pour les nouveaux threads dans le pool de threads spécifié.

 

Les nouvelles fonctions suivantes sont utilisées avec UMS.

Fonction Description
CreateUmsCompletionList
Crée une liste d’achèvement UMS.
CreateUmsThreadContext
Crée un contexte de thread UMS pour représenter un thread de travail UMS.
DeleteUmsCompletionList
Supprime la liste d’achèvement UMS spécifiée. La liste doit être vide.
DeleteUmsThreadContext
Supprime le contexte de thread UMS spécifié. Le thread doit être arrêté.
DequeueUmsCompletionListItems
Récupère les threads de travail UMS de la liste d’achèvement UMS spécifiée.
EnterUmsSchedulingMode
Convertit le thread appelant en thread de planificateur UMS.
ExecuteUmsThread
Exécute le thread de travail UMS spécifié.
GetCurrentUmsThread
Retourne le contexte de thread UMS du thread UMS appelant.
GetNextUmsListItem
Retourne le contexte de thread UMS suivant dans une liste de contextes de thread UMS.
GetUmsCompletionListEvent
Récupère un handle à l’événement associé à la liste de saisie semi-automatique UMS spécifiée.
QueryUmsThreadInformation
Récupère des informations sur le thread de travail UMS spécifié.
SetUmsThreadInformation
Définit des informations de contexte spécifiques à l’application pour le thread de travail UMS spécifié.
UmsSchedulerProc
Fonction de point d’entrée du planificateur UMS définie par l’application associée à une liste d’achèvement UMS.
UmsThreadYield
Renvoie le contrôle au thread du planificateur UMS sur lequel le thread de travail UMS appelant est en cours d’exécution.

 

Nouvelles structures

Structure Description
CACHE_RELATIONSHIP
Décrit les attributs de cache.
GROUP_AFFINITY
Contient une affinité spécifique au groupe de processeurs, telle que l’affinité d’un thread.
GROUP_RELATIONSHIP
Contient des informations sur les groupes de processeurs.
NUMA_NODE_RELATIONSHIP
Contient des informations sur un nœud NUMA dans un groupe de processeurs.
PROCESSOR_GROUP_INFO
Contient le nombre et l’affinité des processeurs dans un groupe de processeurs.
PROCESSOR_NUMBER
Représente un processeur logique dans un groupe de processeurs.
PROCESSOR_RELATIONSHIP
Contient des informations sur l’affinité au sein d’un groupe de processeurs.
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
Contient des informations sur les relations des processeurs logiques et du matériel associé.
UMS_CREATE_THREAD_ATTRIBUTES
Spécifie les attributs d’un thread de travail UMS.
UMS_SCHEDULER_STARTUP_INFO
Spécifie les attributs d’un thread de planificateur UMS