Бөлісу құралы:


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 представляет процессор два и т. д. В следующей таблице представлено подмножество возможной ProcessorAffinity для четырехпроцессорной системы.

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

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

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

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