このプロセスでのスレッドの実行をスケジュールできるプロセッサを取得または設定します。
Public Property ProcessorAffinity As IntPtr
[C#]
public IntPtr ProcessorAffinity {get; set;}
[C++]
public: __property IntPtr get_ProcessorAffinity();public: __property void set_ProcessorAffinity(IntPtr);
[JScript]
public function get ProcessorAffinity() : IntPtr;public function set ProcessorAffinity(IntPtr);
プロパティ値
関連付けられたプロセスのスレッドを実行できるプロセッサを示すビットマスク。既定値は、コンピュータのプロセッサ数によって異なります。既定値は 2n -1 で、n はプロセッサ数です。
例外
例外の種類 | 条件 |
---|---|
Win32Exception | ProcessorAffinity 情報を設定できませんでした。または、関連付けられたプロセスのリソースから取得できませんでした。
または プロセス ID またはプロセス ハンドルがゼロです。(プロセスはまだ開始していません。) |
SystemException | プロセス Id を利用できませんでした。
または プロセスが終了しています。 |
解説
Windows 2000 以降では、プロセスのスレッドをプロセッサからプロセッサに移行できます。移行するたびに、プロセッサ キャッシュが再読み込みされます。システム負荷が重い場合は、特定のスレッドを実行するプロセッサを指定すると、プロセッサ キャッシュを再読み込みする回数が減り、パフォーマンスが向上することがあります。プロセッサとスレッドの関連付けをプロセッサ アフィニティと呼びます。
各プロセッサはビットで表されます。ビット 0 はプロセッサ 1 で、ビット 1 はプロセッサ 2 です。ビットの値を 1 に設定すると、対応するプロセッサがスレッドに割り当てられるように選択されます。 ProcessorAffinity 値をゼロに設定すると、オペレーティング システムのスケジューリング アルゴリズムによってスレッドのアフィニティが設定されます。 ProcessorAffinity 値を 0 以外の任意の値に設定すると、この値は、どのプロセッサが適格であるかを示すビットマスクとして解釈されます。
8 プロセッサ システムの ProcessorAffinity 値の選択内容を次の表に示します。
ビットマスク | バイナリ値 | 選択対象になるプロセッサ |
---|---|---|
0x0001 | 00000000 00000001 | 1 |
0x0003 | 00000000 00000011 | 1 と 2 |
0x0007 | 00000000 00000111 | 1、2、および 3 |
0x0009 | 00000000 00001001 | 1 と 4 |
0x007F | 00000000 01111111 | 1、2、3、4、5、6、および 7 |
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
.NET Framework セキュリティ:
- SecurityPermission (完全信頼を指定して System.Diagnostic.Process のメンバを呼び出すためのアクセス許可) PermissionState.Unrestricted (関連する列挙体)