Partage via


ProcessThread.ProcessorAffinity Propriété

Définition

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é

IntPtr

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é.

S’applique à

Voir aussi