ProcessThread.ProcessorAffinity Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
nativeint
Ten IntPtr 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 nelze nastavit.
Proces je na vzdáleném počítači.
Příklady
Následující příklad ukazuje, jak nastavit ProcessorAffinity vlastnost instance 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á vztah. Jinými slovy, je možné je naplánovat tak, aby běžela.
ProcessorAffinity představuje každý procesor jako bit. Bit 0 představuje procesor 1, bit 1 představuje procesor dva atd. Následující tabulka ukazuje podmnožinu možných ProcessorAffinity systémů se čtyřmi procesory.
| Hodnota vlastnosti (v šestnáctkové soustavě) | 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 |
Můžete také zadat jeden, upřednostňovaný procesor pro vlákno nastavením IdealProcessor vlastnosti. Vlákno procesu se 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 vysokém zatížení systému snížením počtu opětovného načtení mezipaměti procesoru.