ProcessThread.ProcessorAffinity Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Définit les processeurs sur lesquels le thread associé peut s'exécuter.
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
Valeur de propriété
nativeint
IntPtr désignant un jeu de bits, chacun d'eux représentant un processeur sur lequel le thread peut s'exécuter.
- Attributs
Exceptions
L'affinité du processeur n'a pas pu être définie.
Le processus se trouve sur un ordinateur distant.
Exemples
L’exemple suivant montre comment définir la ProcessorAffinity propriété d’un instance du Bloc-notes sur le premier processeur.
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
Remarques
L’affinité processeur d’un thread est l’ensemble de processeurs avec lequel il a une relation. En d’autres termes, il peut être planifié pour s’exécuter.
ProcessorAffinity représente chaque processeur sous la forme d’un bit. Bit 0 représente le processeur 1, bit 1 représente le processeur 2, et ainsi de suite. Le tableau suivant montre un sous-ensemble du possible ProcessorAffinity pour un système à quatre processeurs.
Valeur de propriété (en hexadécimal) | Processeurs valides |
---|---|
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 |
Vous pouvez également spécifier le processeur unique préféré d’un thread en définissant la IdealProcessor propriété . Un thread de processus peut migrer du processeur au processeur, chaque migration rechargeant le cache du processeur. La spécification d’un processeur pour un thread peut améliorer les performances sous de lourdes charges système en réduisant le nombre de fois où le cache du processeur est rechargé.