プロセスとスレッドの新機能

Windows 7 および Windows Server 2008 R2 には、プロセスとスレッド用の次の新しいプログラミング要素が含まれています。

新しい機能

64 ビット バージョンの Windows 7 および Windows Server 2008 R2 では、1 台のコンピューターで 64 を超える論理プロセッサがサポートされています。 詳細については、「 プロセッサ グループ」を参照してください。

ユーザー モード スケジューリング (UMS) は、アプリケーションが独自のスレッドをスケジュールするために使用できる軽量のメカニズムです。 詳細については、「 ユーザー モードのスケジュール設定」を参照してください。

新しい関数

プロセッサとプロセッサ グループでは、次の新しい関数が使用されます。

機能 説明
CreateRemoteThreadEx
別のプロセスの仮想アドレス空間で実行され、必要に応じてプロセッサ グループアフィニティなどの拡張属性を指定するスレッドを作成します。
GetActiveProcessorCount
プロセッサ グループまたはシステム内のアクティブなプロセッサの数を返します。
GetActiveProcessorGroupCount
システム内のアクティブなプロセッサ グループの数を返します。
GetCurrentProcessorNumberEx
呼び出し元のスレッドが実行されている論理プロセッサのプロセッサ グループと数を取得します。
GetLogicalProcessorInformationEx
論理プロセッサと関連するハードウェアの関係に関する情報を取得します。
GetMaximumProcessorCount
プロセッサ グループまたはシステムで使用できる論理プロセッサの最大数を返します。
GetMaximumProcessorGroupCount
システムで使用できるプロセッサ グループの最大数を返します。
GetNumaAvailableMemoryNodeEx
指定したノードで使用可能なメモリの量を USHORT 値として取得します。
GetNumaNodeNumberFromHandle
ファイル ハンドルの基になるデバイスに関連付けられている NUMA ノードを取得します。
GetNumaNodeProcessorMaskEx
指定した NUMA ノードのプロセッサ マスクを USHORT 値として取得します。
GetNumaProcessorNodeEx
指定した論理プロセッサのノード番号を USHORT 値として取得します。
GetNumaProximityNodeEx
指定した近接識別子の USHORT 値としてノード番号を取得します。
GetProcessGroupAffinity
指定したプロセスのプロセッサ グループ アフィニティを取得します。
GetProcessorSystemCycleTime
指定したグループ内の各プロセッサが遅延プロシージャ 呼び出し (DPC) と割り込みサービス ルーチン (ISR) の実行に費やしたサイクル時間を取得します。
GetThreadGroupAffinity
指定したスレッドのプロセッサ グループ アフィニティを取得します。
GetThreadIdealProcessorEx
指定したスレッドに最適なプロセッサのプロセッサ番号を取得します。
QueryIdleProcessorCycleTimeEx
指定したプロセッサ グループ内の各論理プロセッサでアイドル状態のスレッドの累積サイクル時間を取得します。
SetThreadGroupAffinity
指定したスレッドのプロセッサ グループ アフィニティを設定します。
SetThreadIdealProcessorEx
指定したスレッドの理想的なプロセッサを設定し、必要に応じて、以前の理想的なプロセッサを取得します。

 

スレッド プールでは、次の新しい関数が使用されます。

機能 説明
QueryThreadpoolStackInformation
指定したスレッド プール内のスレッドのスタック予約とコミット サイズを取得します。
SetThreadpoolCallbackPersistent
コールバックを永続スレッドで実行することを指定します。
SetThreadpoolCallbackPriority
同じスレッド プール内の他の作業項目に対するコールバック関数の優先度を指定します。
SetThreadpoolStackInformation
指定したスレッド プール内の新しいスレッドのスタック予約とコミット サイズを設定します。

 

UMS では、次の新しい関数が使用されます。

機能 説明
CreateUmsCompletionList
UMS 入力候補リストを作成します。
CreateUmsThreadContext
UMS ワーカー スレッドを表す UMS スレッド コンテキストを作成します。
DeleteUmsCompletionList
指定した UMS 入力候補リストを削除します。 リストは空である必要があります。
DeleteUmsThreadContext
指定した UMS スレッド コンテキストを削除します。 スレッドは終了する必要があります。
DequeueUmsCompletionListItems
指定した UMS 完了リストから UMS ワーカー スレッドを取得します。
EnterUmsSchedulingMode
呼び出し元のスレッドを UMS スケジューラ スレッドに変換します。
ExecuteUmsThread
指定した UMS ワーカー スレッドを実行します。
GetCurrentUmsThread
呼び出し元の UMS スレッドの UMS スレッド コンテキストを返します。
GetNextUmsListItem
UMS スレッド コンテキストの一覧で次の UMS スレッド コンテキストを返します。
GetUmsCompletionListEvent
指定した UMS 完了リストに関連付けられているイベントへのハンドルを取得します。
QueryUmsThreadInformation
指定した UMS ワーカー スレッドに関する情報を取得します。
SetUmsThreadInformation
指定した UMS ワーカー スレッドのアプリケーション固有のコンテキスト情報を設定します。
UmsSchedulerProc
UMS 完了リストに関連付けられているアプリケーション定義の UMS スケジューラ エントリ ポイント関数。
UmsThreadYield
呼び出し元の UMS ワーカー スレッドが実行されている UMS スケジューラ スレッドに制御を提供します。

 

新しい構造体

構造体 説明
CACHE_RELATIONSHIP
キャッシュ属性について説明します。
GROUP_AFFINITY
スレッドのアフィニティなど、プロセッサ グループ固有のアフィニティが含まれます。
GROUP_RELATIONSHIP
プロセッサ グループに関する情報が含まれます。
NUMA_NODE_RELATIONSHIP
プロセッサ グループ内の NUMA ノードに関する情報を格納します。
PROCESSOR_GROUP_INFO
プロセッサ グループ内のプロセッサの数とアフィニティを格納します。
PROCESSOR_NUMBER
プロセッサ グループ内の論理プロセッサを表します。
PROCESSOR_RELATIONSHIP
プロセッサ グループ内のアフィニティに関する情報を格納します。
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX
論理プロセッサと関連ハードウェアの関係に関する情報が含まれます。
UMS_CREATE_THREAD_ATTRIBUTES
UMS ワーカー スレッドの属性を指定します。
UMS_SCHEDULER_STARTUP_INFO
UMS スケジューラ スレッドの属性を指定します