ProcessThread.ProcessorAffinity Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengatur prosesor tempat utas terkait dapat berjalan.
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
Nilai Properti
nativeint
Yang IntPtr menunjuk ke satu set bit, yang masing-masing mewakili prosesor yang dapat dijalankan utas.
- Atribut
Pengecualian
Afinitas prosesor tidak dapat disetel.
Prosesnya ada di komputer jarak jauh.
Contoh
Contoh berikut menunjukkan cara mengatur ProcessorAffinity properti untuk instans Notepad ke prosesor pertama.
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
Keterangan
Afinitas prosesor utas adalah sekumpulan prosesor yang memiliki hubungan dengannya. Dengan kata lain, mereka yang dapat dijadwalkan untuk dijalankan.
ProcessorAffinity mewakili setiap prosesor sebagai sedikit. Bit 0 mewakili prosesor satu, bit 1 mewakili prosesor dua, dan sebagainya. Tabel berikut ini memperlihatkan subset yang mungkin ProcessorAffinity untuk sistem empat prosesor.
Nilai properti (dalam heksadesimal) | Prosesor yang valid |
---|---|
0x0001 | 1 |
0x0002 | 2 |
0x0003 | 1 atau 2 |
0x0004 | 3 |
0x0005 | 1 atau 3 |
0x0007 | 1, 2, atau 3 |
0x000F | 1, 2, 3, atau 4 |
Anda juga dapat menentukan prosesor tunggal pilihan untuk utas dengan mengatur IdealProcessor properti . Utas proses dapat bermigrasi dari prosesor ke prosesor, dengan setiap migrasi memuat ulang cache prosesor. Menentukan prosesor untuk utas dapat meningkatkan performa di bawah beban sistem berat dengan mengurangi berapa kali cache prosesor dimuat ulang.