日期:2014-05-18  浏览次数:21349 次

C# 如何将两个线程分配给不同的CPU
双核处理器。WindowsXP操作系统。
同一个进程,有两个相互独立的线程。
我想让两个线程分别在两个不同的CPU上执行。

我查资料说API SetThreadAffinityMask()可以设置。
但是,C#的封装是什么呢?
我只找到一个Process.ThreadAffinity属性。这个不能指定单个线程吧?

------解决方案--------------------
.NET是应用层虚拟机...也就是说不会封装这种硬件抽象层的东西,不给你操作CPU的机会...除非使用非托管代码...
------解决方案--------------------
这个题目有意思,关注,同时试问楼主,为什么有这种需求呢?

------解决方案--------------------
帮顶
------解决方案--------------------
不懂,学习
------解决方案--------------------
如果API可以,就用API实现
API不是离CPU更近
------解决方案--------------------
mark
以后来学习
------解决方案--------------------
其他地方抄的

[DllImport("kernel32.dll")]
static extern IntPtr GetCurrentThread();
[DllImport("kernel32.dll")]
static extern IntPtr SetThreadAffinityMask(IntPtr hThread, IntPtr dwThreadAffinityMask);
------解决方案--------------------
不错,有意思

一些CPU测试软件目前都是怎对单核的
------解决方案--------------------
mark