What's New in Processes and Threads
Windows 7 and Windows Server 2008 R2 include the following new programming elements for processes and threads.
New Capabilities
The 64-bit versions of Windows 7 and Windows Server 2008 R2 support more than 64 logical processors on a single computer. For more information, see Processor Groups.
User-mode scheduling (UMS) is a lightweight mechanism that applications can use to schedule their own threads. For more information, see User-Mode Scheduling.
New Functions
The following new functions are used with processors and processor groups.
Function | Description |
---|---|
CreateRemoteThreadEx |
Creates a thread that runs in the virtual address space of another process and optionally specifies extended attributes such as processor group affinity. |
GetActiveProcessorCount |
Returns the number of active processors in a processor group or in the system. |
GetActiveProcessorGroupCount |
Returns the number of active processor groups in the system. |
GetCurrentProcessorNumberEx |
Retrieves the processor group and number of the logical processor in which the calling thread is running. |
GetLogicalProcessorInformationEx |
Retrieves information about the relationships of logical processors and related hardware. |
GetMaximumProcessorCount |
Returns the maximum number of logical processors that a processor group or the system can have. |
GetMaximumProcessorGroupCount |
Returns the maximum number of processor groups that the system can have. |
GetNumaAvailableMemoryNodeEx |
Retrieves the amount of memory that is available in the specified node as a USHORT value. |
GetNumaNodeNumberFromHandle |
Retrieves the NUMA node associated with the underlying device for a file handle. |
GetNumaNodeProcessorMaskEx |
Retrieves the processor mask for the specified NUMA node as a USHORT value. |
GetNumaProcessorNodeEx |
Retrieves the node number of the specified logical processor as a USHORT value. |
GetNumaProximityNodeEx |
Retrieves the node number as a USHORT value for the specified proximity identifier. |
GetProcessGroupAffinity |
Retrieves the processor group affinity of the specified process. |
GetProcessorSystemCycleTime |
Retrieves the cycle time each processor in the specified group spent executing deferred procedure calls (DPCs) and interrupt service routines (ISRs). |
GetThreadGroupAffinity |
Retrieves the processor group affinity of the specified thread. |
GetThreadIdealProcessorEx |
Retrieves the processor number of the ideal processor for the specified thread. |
QueryIdleProcessorCycleTimeEx |
Retrieves the accumulated cycle time for the idle thread on each logical processor in the specified processor group. |
SetThreadGroupAffinity |
Sets the processor group affinity for the specified thread. |
SetThreadIdealProcessorEx |
Sets the ideal processor for the specified thread and optionally retrieves the previous ideal processor. |
The following new functions are used with thread pools.
Function | Description |
---|---|
QueryThreadpoolStackInformation |
Retrieves the stack reserve and commit sizes for threads in the specified thread pool. |
SetThreadpoolCallbackPersistent |
Specifies that the callback should run on a persistent thread. |
SetThreadpoolCallbackPriority |
Specifies the priority of a callback function relative to other work items in the same thread pool. |
SetThreadpoolStackInformation |
Sets the stack reserve and commit sizes for new threads in the specified thread pool. |
The following new functions are used with UMS.
Function | Description |
---|---|
CreateUmsCompletionList |
Creates a UMS completion list. |
CreateUmsThreadContext |
Creates a UMS thread context to represent a UMS worker thread. |
DeleteUmsCompletionList |
Deletes the specified UMS completion list. The list must be empty. |
DeleteUmsThreadContext |
Deletes the specified UMS thread context. The thread must be terminated. |
DequeueUmsCompletionListItems |
Retrieves UMS worker threads from the specified UMS completion list. |
EnterUmsSchedulingMode |
Converts the calling thread into a UMS scheduler thread. |
ExecuteUmsThread |
Runs the specified UMS worker thread. |
GetCurrentUmsThread |
Returns the UMS thread context of the calling UMS thread. |
GetNextUmsListItem |
Returns the next UMS thread context in a list of UMS thread contexts. |
GetUmsCompletionListEvent |
Retrieves a handle to the event associated with the specified UMS completion list. |
QueryUmsThreadInformation |
Retrieves information about the specified UMS worker thread. |
SetUmsThreadInformation |
Sets application-specific context information for the specified UMS worker thread. |
UmsSchedulerProc |
The application-defined UMS scheduler entry point function associated with a UMS completion list. |
UmsThreadYield |
Yields control to the UMS scheduler thread on which the calling UMS worker thread is running. |
New Structures
Structure | Description |
---|---|
CACHE_RELATIONSHIP |
Describes cache attributes. |
GROUP_AFFINITY |
Contains a processor group-specific affinity, such as the affinity of a thread. |
GROUP_RELATIONSHIP |
Contains information about processor groups. |
NUMA_NODE_RELATIONSHIP |
Contains information about a NUMA node in a processor group. |
PROCESSOR_GROUP_INFO |
Contains the number and affinity of processors in a processor group. |
PROCESSOR_NUMBER |
Represents a logical processor in a processor group. |
PROCESSOR_RELATIONSHIP |
Contains information about affinity within a processor group. |
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX |
Contains information about the relationships of logical processors and related hardware. |
UMS_CREATE_THREAD_ATTRIBUTES |
Specifies attributes for a UMS worker thread. |
UMS_SCHEDULER_STARTUP_INFO |
Specifies attributes for a UMS scheduler thread |