Neuerungen in Prozessen und Threads

Windows 7 und Windows Server 2008 R2 enthalten die folgenden neuen Programmierelemente für Prozesse und Threads.

Neue Funktionen

Die 64-Bit-Versionen von Windows 7 und Windows Server 2008 R2 unterstützen mehr als 64 logische Prozessoren auf einem einzelnen Computer. Weitere Informationen finden Sie unter Prozessorgruppen.

Ums (User Mode Scheduling) ist ein einfacher Mechanismus, mit dem Anwendungen ihre eigenen Threads planen können. Weitere Informationen finden Sie unter Benutzermodusplanung.

Neue Funktionen

Die folgenden neuen Funktionen werden mit Prozessoren und Prozessorgruppen verwendet.

Funktion BESCHREIBUNG
CreateRemoteThreadEx
Erstellt einen Thread, der im virtuellen Adressraum eines anderen Prozesses ausgeführt wird, und gibt optional erweiterte Attribute an, z. B. Prozessorgruppenaffinität.
GetActiveProcessorCount
Gibt die Anzahl der aktiven Prozessoren in einer Prozessorgruppe oder im System zurück.
GetActiveProcessorGroupCount
Gibt die Anzahl der aktiven Prozessorgruppen im System zurück.
GetCurrentProcessorNumberEx
Ruft die Prozessorgruppe und die Nummer des logischen Prozessors ab, in dem der aufrufende Thread ausgeführt wird.
GetLogicalProcessorInformationEx
Ruft Informationen zu den Beziehungen von logischen Prozessoren und zugehöriger Hardware ab.
GetMaximumProcessorCount
Gibt die maximale Anzahl logischer Prozessoren zurück, über die eine Prozessorgruppe oder das System verfügen kann.
GetMaximumProcessorGroupCount
Gibt die maximale Anzahl von Prozessorgruppen zurück, die das System haben kann.
GetNumaAvailableMemoryNodeEx
Ruft die Menge an Arbeitsspeicher ab, die im angegebenen Knoten als USHORT-Wert verfügbar ist.
GetNumaNodeNumberFromHandle
Ruft den NUMA-Knoten ab, der dem zugrunde liegenden Gerät für ein Dateihandle zugeordnet ist.
GetNumaNodeProcessorMaskEx
Ruft die Prozessormaske für den angegebenen NUMA-Knoten als USHORT-Wert ab.
GetNumaProcessorNodeEx
Ruft die Knotennummer des angegebenen logischen Prozessors als USHORT-Wert ab.
GetNumaProximityNodeEx
Ruft die Knotennummer als USHORT-Wert für den angegebenen Näherungsbezeichner ab.
GetProcessGroupAffinity
Ruft die Prozessorgruppenaffinität des angegebenen Prozesses ab.
GetProcessorSystemCycleTime
Ruft die Zykluszeit ab, die jeder Prozessor in der angegebenen Gruppe für die Ausführung verzögerter Prozeduraufrufe (DpCs) und Interruptdienstroutinen (ISRs) aufgewendet hat.
GetThreadGroupAffinity
Ruft die Prozessorgruppenaffinität des angegebenen Threads ab.
GetThreadIdealProcessorEx
Ruft die Prozessornummer des idealen Prozessors für den angegebenen Thread ab.
QueryIdleProcessorCycleTimeEx
Ruft die akkumulierte Zykluszeit für den Thread im Leerlauf auf jedem logischen Prozessor in der angegebenen Prozessorgruppe ab.
SetThreadGroupAffinity
Legt die Prozessorgruppenaffinität für den angegebenen Thread fest.
SetThreadIdealProcessorEx
Legt den idealen Prozessor für den angegebenen Thread fest und ruft optional den vorherigen idealen Prozessor ab.

 

Die folgenden neuen Funktionen werden mit Threadpools verwendet.

Funktion BESCHREIBUNG
QueryThreadpoolStackInformation
Ruft die Stapelreserve- und Commitgrößen für Threads im angegebenen Threadpool ab.
SetThreadpoolCallbackPersistent
Gibt an, dass der Rückruf in einem persistenten Thread ausgeführt werden soll.
SetThreadpoolCallbackPriority
Gibt die Priorität einer Rückruffunktion relativ zu anderen Arbeitselementen im selben Threadpool an.
SetThreadpoolStackInformation
Legt die Stapelreserve- und Commitgrößen für neue Threads im angegebenen Threadpool fest.

 

Die folgenden neuen Funktionen werden mit UMS verwendet.

Funktion BESCHREIBUNG
CreateUmsCompletionList
Erstellt eine UMS-Vervollständigungsliste.
CreateUmsThreadContext
Erstellt einen UMS-Threadkontext, der einen UMS-Workerthread darstellt.
DeleteUmsCompletionList
Löscht die angegebene UMS-Vervollständigungsliste. Die Liste muss leer sein.
DeleteUmsThreadContext
Löscht den angegebenen UMS-Threadkontext. Der Thread muss beendet werden.
DequeueUmsCompletionListItems
Ruft UMS-Arbeitsthreads aus der angegebenen UMS-Vervollständigungsliste ab.
EnterUmsSchedulingMode
Konvertiert den aufrufenden Thread in einen UMS-Planerthread.
ExecuteUmsThread
Führt den angegebenen UMS-Workerthread aus.
GetCurrentUmsThread
Gibt den UMS-Threadkontext des aufrufenden UMS-Threads zurück.
GetNextUmsListItem
Gibt den nächsten UMS-Threadkontext in einer Liste von UMS-Threadkontexten zurück.
GetUmsCompletionListEvent
Ruft ein Handle für das Ereignis ab, das der angegebenen UMS-Vervollständigungsliste zugeordnet ist.
QueryUmsThreadInformation
Ruft Informationen zum angegebenen UMS-Workerthread ab.
SetUmsThreadInformation
Legt anwendungsspezifische Kontextinformationen für den angegebenen UMS-Workerthread fest.
UmsSchedulerProc
Die anwendungsdefinierte UMS-Scheduler-Einstiegspunktfunktion, die einer UMS-Vervollständigungsliste zugeordnet ist.
UmsThreadYield
Gibt die Steuerung an den UMS-Planerthread aus, auf dem der aufrufende UMS-Workerthread ausgeführt wird.

 

Neue Strukturen

Struktur BESCHREIBUNG
CACHE_RELATIONSHIP
Beschreibt Cacheattribute.
GROUP_AFFINITY
Enthält eine prozessorgruppenspezifische Affinität, z. B. die Affinität eines Threads.
GROUP_RELATIONSHIP
Enthält Informationen zu Prozessorgruppen.
NUMA_NODE_RELATIONSHIP
Enthält Informationen zu einem NUMA-Knoten in einer Prozessorgruppe.
PROCESSOR_GROUP_INFO
Enthält die Anzahl und Affinität von Prozessoren in einer Prozessorgruppe.
PROCESSOR_NUMBER
Stellt einen logischen Prozessor in einer Prozessorgruppe dar.
PROCESSOR_RELATIONSHIP
Enthält Informationen zur Affinität innerhalb einer Prozessorgruppe.
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
Enthält Informationen zu den Beziehungen von logischen Prozessoren und zugehöriger Hardware.
UMS_CREATE_THREAD_ATTRIBUTES
Gibt Attribute für einen UMS-Workerthread an.
UMS_SCHEDULER_STARTUP_INFO
Gibt Attribute für einen UMS-Planerthread an.