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
Pointant IntPtr vers un ensemble de bits, chacun 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’une 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é du processeur d’un thread est l’ensemble de processeurs dont il a une relation. En d’autres termes, celles-ci peuvent être planifiées pour s’exécuter.
ProcessorAffinity représente chaque processeur en tant que bit. Le bit 0 représente le processeur 1, bit 1 représente le processeur 2, et ainsi de suite. Le tableau suivant présente 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 et 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é.