Sdílet prostřednictvím


ProcessThread.ProcessorAffinity Vlastnost

Definice

Nastaví procesory, na kterých může přidružené vlákno běžet.

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

Hodnota vlastnosti

IntPtr

nativeint

Objekt IntPtr , který odkazuje na sadu bitů, z nichž každý představuje procesor, na kterém může vlákno běžet.

Atributy

Výjimky

Spřažení procesoru nebylo možné nastavit.

Proces je ve vzdáleném počítači.

Příklady

Následující příklad ukazuje, jak nastavit ProcessorAffinity vlastnost pro instanci Poznámkového bloku na první procesor.

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

Poznámky

Spřažení procesoru vlákna je sada procesorů, ke které má relaci. Jinými slovy, ty, pro které je možné naplánovat spuštění.

ProcessorAffinity představuje každý procesor jako bit. Bit 0 představuje procesor jeden, bit 1 představuje procesor dva atd. Následující tabulka ukazuje podmnožinu možností ProcessorAffinity pro systém se čtyřmi procesory.

Hodnota vlastnosti (v šestnáctkovém formátu) Platné procesory
0x0001 1
0x0002 2
0x0003 1 nebo 2
0x0004 3
0x0005 1 nebo 3
0x0007 1, 2 nebo 3
0x000F 1, 2, 3 nebo 4

Nastavením vlastnosti můžete také zadat jeden upřednostňovaný procesor pro vlákno IdealProcessor . Vlákno procesu může migrovat z procesoru na procesor, přičemž každá migrace znovu načte mezipaměť procesoru. Určení procesoru pro vlákno může zvýšit výkon při velkém zatížení systému tím, že se sníží počet opakovaných načtení mezipaměti procesoru.

Platí pro

Viz také