双核处理器。WindowsXP操作系统。
同一个进程,有两个相互独立的线程。
我想让两个线程分别在两个不同的CPU上执行。我查资料说API SetThreadAffinityMask()可以设置。
但是,C#的封装是什么呢?
我只找到一个Process.ThreadAffinity属性。这个不能指定单个线程吧?
同一个进程,有两个相互独立的线程。
我想让两个线程分别在两个不同的CPU上执行。我查资料说API SetThreadAffinityMask()可以设置。
但是,C#的封装是什么呢?
我只找到一个Process.ThreadAffinity属性。这个不能指定单个线程吧?
API不是离CPU更近
但是我用C++会调API。用C#呢?
static extern IntPtr GetCurrentThread();
[DllImport("kernel32.dll")]
static extern IntPtr SetThreadAffinityMask(IntPtr hThread, IntPtr dwThreadAffinityMask);
static void Main(string[] args) {
Process Proc = Process.GetCurrentProcess();
long AffinityMask = (long)Proc.ProcessorAffinity;
AffinityMask &= 0x0001;
Proc.ProcessorAffinity = (IntPtr)AffinityMask;
int i = 0;
while (true) {
++i;
}
}