ProcessThread.ProcessorAffinity Property

定義

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

[System.ComponentModel.Browsable(false)]
public IntPtr ProcessorAffinity { set; }
プロパティ値

スレッドを実行できるプロセッサを表すビットのセットを指す IntPtr An 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)
                Process.Start("notepad");
            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
            Process.Start("notepad")
        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.

適用対象

こちらもご覧ください