ProcessThread.ProcessorAffinity Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define os processadores onde o thread associado pode correr.
public:
property IntPtr ProcessorAffinity { void set(IntPtr value); };
[System.ComponentModel.Browsable(false)]
public IntPtr ProcessorAffinity { set; }
[<System.ComponentModel.Browsable(false)>]
member this.ProcessorAffinity : nativeint
Public Property ProcessorAffinity As IntPtr
Valor de Propriedade
nativeint
E IntPtr que aponta para um conjunto de bits, cada um dos quais representa um processador onde a thread pode correr.
- Atributos
Exceções
A afinidade do processador não pôde ser definida.
O processo é feito num computador remoto.
Exemplos
O exemplo seguinte mostra como definir a ProcessorAffinity propriedade para uma instância do Notepad no primeiro processador.
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
Observações
A afinidade de processador de uma thread é o conjunto de processadores com os quais tem uma relação. Ou seja, aqueles em que pode ser agendado para correr.
ProcessorAffinity representa cada processador como um bit. O bit 0 representa o processador um, o bit 1 representa o processador dois, e assim sucessivamente. A tabela seguinte mostra um subconjunto do possível ProcessorAffinity para um sistema com quatro processadores.
| Valor da propriedade (em hexadecimal) | Processadores válidos |
|---|---|
| 0x0001 | 1 |
| 0x0002 | 2 |
| 0x0003 | 1 ou 2 |
| 0x0004 | 3 |
| 0x0005 | 1 ou 3 |
| 0x0007 | 1, 2 ou 3 |
| 0x000F | 1, 2, 3 ou 4 |
Também pode especificar o processador único preferido para uma thread definindo a IdealProcessor propriedade. Um thread de processo pode migrar de processador para processador, com cada migração a recarregar a cache do processador. Especificar um processador para uma thread pode melhorar o desempenho sob cargas pesadas do sistema ao reduzir o número de vezes que a cache do processador é recarregada.