如何在特定核心上启动线程?
我有一个四核CPU,让我说我总是希望在第二个核心上启动一个Thread
。
这可能在C#中吗?
是。 查看适用于Windows的ProcessorAffinity
或适用于XBox XNA的SetProcessorAffinity
。
这也在另一个Stackoverflow问题上讨论过。
是的,请查看该线程的ProcessorAffinity property
。
设置进程的ProcessorAffinity
:
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 ↑
简单代码:
using (var process = Process.GetCurrentProcess()) { // only run on core number 1 process.ProcessorAffinity = (IntPtr) 0x0001; }