Поделиться через


ProcessThread.ProcessorAffinity Свойство

Определение

Задает процессоры, на которых может выполняться соответствующий поток.

public:
 property IntPtr ProcessorAffinity {  void set(IntPtr value); };
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public IntPtr ProcessorAffinity { set; }
public IntPtr ProcessorAffinity { set; }
[System.ComponentModel.Browsable(false)]
public IntPtr ProcessorAffinity { set; }
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
member this.ProcessorAffinity : nativeint
member this.ProcessorAffinity : nativeint
[<System.ComponentModel.Browsable(false)>]
member this.ProcessorAffinity : nativeint
Public Property ProcessorAffinity As IntPtr

Значение свойства

IntPtr

nativeint

Объект IntPtr, указывающий на набор битов, каждый из которых представляет процессор, где может выполняться поток.

Атрибуты

Исключения

Не удается задать сходство процессоров.

Данный процесс выполняется на удаленном компьютере.

Примеры

В следующем примере показано, как задать ProcessorAffinity для свойства экземпляра Блокнота первый процессор.

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.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
End Class

Комментарии

Сходство процессоров потока — это набор процессоров, с которые у него есть связь. Другими словами, те, на которых можно запланировать запуск.

ProcessorAffinity представляет каждый процессор в виде бита. Бит 0 представляет процессор 1, бит 1 — процессор два и т. д. В следующей таблице показано подмножество возможных ProcessorAffinity для четырехпроцессорной системы.

Значение свойства (в шестнадцатеричном формате) Допустимые процессоры
0x0001 1
0x0002 2
0x0003 1 или 2
0x0004 3
0x0005 1 или 3
0x0007 1, 2 или 3
0x000F 1, 2, 3 или 4

Можно также указать один предпочтительный процессор для потока, задав IdealProcessor свойство . Поток процесса может выполнять миграцию с процессора на процессор, при этом каждая миграция перезагружается кэш процессора. Указание процессора для потока может повысить производительность при больших нагрузках системы, уменьшая количество перезагрузок кэша процессора.

Применяется к

См. также раздел