ProcessThread.ProcessorAffinity Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.