ProcessThread.ProcessorAffinity ProcessThread.ProcessorAffinity ProcessThread.ProcessorAffinity ProcessThread.ProcessorAffinity Property


関連付けられたスレッドを実行できるプロセッサを設定します。Sets the processors on which the associated thread can run.

 property IntPtr ProcessorAffinity {  void set(IntPtr value); };
public IntPtr ProcessorAffinity { set; }
member this.ProcessorAffinity : nativeint
Public Property ProcessorAffinity As IntPtr


スレッドを実行できるプロセッサを表すビットのセットを指す IntPtrAn IntPtr that points to a set of bits, each of which represents a processor that the thread can run on.


プロセッサ アフィニティを設定できませんでした。The processor affinity could not be set.

プラットフォームは、Windows 98 または Windows Millennium Edition です。The platform is Windows 98 or Windows Millennium Edition.

プロセスは、リモート コンピューター上にあります。The process is on a remote computer.

次の例は、設定する方法を示します、ProcessorAffinityを最初のプロセッサには、メモ帳のインスタンスのプロパティ。The following example shows how to set the ProcessorAffinity property for an instance of Notepad to the first processor.

using System;
using System.Diagnostics;

namespace ProcessThreadIdealProcessor
    class Program
        static void Main(string[] args)
            // Make sure there is an instance of notepad running.
            Process[] notepads = Process.GetProcessesByName("notepad");
            if (notepads.Length == 0)
            ProcessThreadCollection threads;
            //Process[] notepads;
            // Retrieve the Notepad processes.
            notepads = Process.GetProcessesByName("Notepad");
            // Get the ProcessThread collection for the first instance
            threads = notepads[0].Threads;
            // Set the properties on the first ProcessThread in the collection
            threads[0].IdealProcessor = 0;
            threads[0].ProcessorAffinity = (IntPtr)1;
Imports System
Imports System.Diagnostics

Class Program
    Shared Sub Main(ByVal args() As String) 
        ' Make sure there is an instance of notepad running.
        Dim notepads As Process() = Process.GetProcessesByName("notepad")
        If notepads.Length = 0 Then
        End If
        Dim threads As ProcessThreadCollection
        'Process[] notepads;
        ' Retrieve the Notepad processes.
        notepads = Process.GetProcessesByName("Notepad")
        ' Get the ProcessThread collection for the first instance
        threads = notepads(0).Threads
        ' Set the properties on the first ProcessThread in the collection
        threads(0).IdealProcessor = 0
        threads(0).ProcessorAffinity = CType(1, IntPtr)
    End Sub 'Main
End Class 'Program


スレッドのプロセッサのアフィニティは、プロセッサの関係のセットです。The processor affinity of a thread is the set of processors it has a relationship to. つまり、これらの it は、上で実行をスケジュールできます。In other words, those it can be scheduled to run on.

ProcessorAffinity ビットで各プロセッサを表します。ProcessorAffinity represents each processor as a bit. ビット 0 が 1 つのプロセッサを表して、ビット 1 は、2 つのプロセッサを表します。Bit 0 represents processor one, bit 1 represents processor two, and so on. 次の表は、使用可能なサブセットProcessorAffinityシステムの 4 つのプロセッサ。The following table shows a subset of the possible ProcessorAffinity for a four-processor system.

プロパティ値 (16 進数)Property value (in hexadecimal) 有効なプロセッサValid processors
0x00010x0001 11
0x00020x0002 22
0x00030x0003 1 または 21 or 2
0x00040x0004 33
0x00050x0005 1 または 31 or 3
0x00070x0007 1、2、または 31, 2, or 3
0x000F0x000F 1、2、3、または 41, 2, 3, or 4

設定して、スレッドの優先、1 つのプロセッサを指定することも、IdealProcessorプロパティ。You can also specify the single, preferred processor for a thread by setting the IdealProcessor property. プロセス スレッドでは、プロセッサごとの移行にプロセッサを移行できます。A process thread can migrate from processor to processor, with each migration reloading the processor cache. スレッドのプロセッサを指定すると、プロセッサのキャッシュが再読み込み回数を減らすことで重い負荷のパフォーマンスが向上します。Specifying a processor for a thread can improve performance under heavy system loads by reducing the number of times the processor cache is reloaded.