ProcessThread.ProcessorAffinity Propriedade

Definição

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

IntPtr

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.

Aplica-se a

Ver também