プロセスとスレッドの新機能
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 スケジューラ スレッドの属性を指定します |