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
Значение свойства
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 свойство . Поток процесса может выполнять миграцию с процессора на процессор, при этом каждая миграция перезагружается кэш процессора. Указание процессора для потока может повысить производительность при больших нагрузках системы, уменьшая количество перезагрузок кэша процессора.