ProcessThread.ProcessorAffinity 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
设置关联线程可以在其上运行的处理器。
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
属性值
IntPtr
nativeint
指向一组位的 IntPtr,每个位表示该线程可在其上运行的一个处理器。
- 属性
例外
未能设置处理器关联。
进程在远程计算机上。
示例
以下示例演示如何将记事本实例的 属性设置为 ProcessorAffinity 第一个处理器。
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
注解
线程的处理器相关性是它与之有关系的处理器集。 换句话说,可以计划运行它的那些。
ProcessorAffinity 将每个处理器表示为一个位。 位 0 表示处理器 1,位 1 表示处理器 2,依此。 下表显示了四处理器系统可能的 ProcessorAffinity 的子集。
属性值 (十六进制) | 有效处理器 |
---|---|
0x0001 | 1 |
0x0002 | 2 |
0x0003 | 1 或 2 |
0x0004 | 3 |
0x0005 | 1 或 3 |
0x0007 | 1、2 或 3 |
0x000F | 1 个、2 个、3 个或 4 个 |
还可以通过设置 IdealProcessor 属性为线程指定单一首选处理器。 进程线程可以从处理器迁移到处理器,每次迁移都会重新加载处理器缓存。 为线程指定处理器可以通过减少重载处理器缓存的次数来提高系统负载过重时的性能。