Comparteix a través de


ProcessThread.ProcessorAffinity Propiedad

Definición

Establece los procesadores en los que puede ejecutarse el subproceso asociado.

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

Valor de propiedad

IntPtr

nativeint

IntPtr que señala a un conjunto de bits, cada uno de los cuales representa a un procesador en el que puede ejecutarse el subproceso.

Atributos

Excepciones

No se pudo establecer la afinidad de procesador.

El proceso está en un equipo remoto.

Ejemplos

En el ejemplo siguiente se muestra cómo establecer la ProcessorAffinity propiedad para una instancia del Bloc de notas en el primer procesador.

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

Comentarios

La afinidad de procesador de un subproceso es el conjunto de procesadores a los que tiene una relación. En otras palabras, se pueden programar para ejecutarse.

ProcessorAffinity representa cada procesador como un bit. Bit 0 representa el procesador uno, el bit 1 representa el procesador dos, etc. En la tabla siguiente se muestra un subconjunto de lo posible ProcessorAffinity para un sistema de cuatro procesadores.

Valor de propiedad (en hexadecimal) Procesadores válidos
0x0001 1
0x0002 2
0x0003 1 o 2
0x0004 3
0x0005 1 o 3
0x0007 1, 2 o 3
0x000F 1, 2, 3 o 4

También puede especificar el procesador único preferido para un subproceso estableciendo la IdealProcessor propiedad . Un subproceso de proceso puede migrar del procesador al procesador, con cada migración que vuelve a cargar la memoria caché del procesador. La especificación de un procesador para un subproceso puede mejorar el rendimiento en cargas pesadas del sistema al reducir el número de veces que se vuelve a cargar la memoria caché del procesador.

Se aplica a

Consulte también