How to start a thread on a specific core? How to start a thread on a specific core? multithreading multithreading

How to start a thread on a specific core?


Yes. Check out ProcessorAffinity for Windows or SetProcessorAffinity for XBox XNA.

This is also discussed on another Stackoverflow question.


Set ProcessorAffinity of the process:

0x0001 = 0000 0001 - run on 1st core                 ↑0x0002 = 0000 0010 - run on 2nd core                ↑0x0003 = 0000 0011 - run on 1st and 2nd core                ↑↑0x0004 = 0000 0100 - run on 3rd core               ↑

Simple code:

using (var process = Process.GetCurrentProcess()){  // only run on core number 1  process.ProcessorAffinity = (IntPtr) 0x0001;}