This documentation is archived and is not being maintained.

Process.ProcessorAffinity Property

Gets or sets the processors on which the threads in this process can be scheduled to run.

[Visual Basic]
Public Property ProcessorAffinity As IntPtr
public IntPtr ProcessorAffinity {get; set;}
public: __property IntPtr get_ProcessorAffinity();
public: __property void set_ProcessorAffinity(IntPtr);
public function get ProcessorAffinity() : IntPtr;
public function set ProcessorAffinity(IntPtr);

Property Value

A bitmask representing the processors that the threads in the associated process can run on. The default depends on the number of processors on the computer. The default value is 2n -1, where n is the number of processors.


Exception Type Condition
Win32Exception ProcessorAffinity information could not be set or retrieved from the associated process resource.


The process identifier or process handle is zero. (The process has not been started.)

SystemException The process Id was not available.


The process has exited.


In Windows 2000 and later, a thread in a process can migrate from processor to processor, with each migration reloading the processor cache. Under heavy system loads, specifying which processor should run a specific thread can improve performance by reducing the number of times the processor cache is reloaded. The association between a processor and a thread is called the processor affinity.

Each processor is represented as a bit. Bit 0 is processor one, bit 1 is processor two, and so forth. If you set a bit to to the value 1, the corresponding processor is selected for thread assignment. When you set the ProcessorAffinity value to zero, the operating system's scheduling algorithms set the thread's affinity. When the ProcessorAffinity value is set to any nonzero value, the value is interpreted as a bitmask that specifies those processors eligible for selection.

The following table shows a selection of ProcessorAffinity values for an eight-processor system.

Bitmask Binary value Eligible processors
0x0001 00000000 00000001 1
0x0003 00000000 00000011 1 and 2
0x0007 00000000 00000111 1, 2 and 3
0x0009 00000000 00001001 1 and 4
0x007F 00000000 01111111 1, 2, 3, 4, 5, 6 and 7


Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

.NET Framework Security: 

See Also

Process Class | Process Members | System.Diagnostics Namespace