首页 新闻 会员 周边 捐助

.net中的线程在多核CPU上时如何分配的。

0
悬赏园豆:30 [已解决问题] 解决于 2010-01-18 14:24

例如我平时写的异步委托,如果在多核CPU上执行的话是否真正利用了多核CPU的优势。因为我们知道在单核CPU上的多线程程序其实仅仅是一种假象,并不是真正的多线程.并不能真正提高运算的速度和性能。还有就是我如何制定我的一个线程在指定的CPU上运行.例如我发现某个CPU的运算结束空闲了,我如何能指定其进行新的任务。.net中有否这样的丢进程或者线程的调度类,可以手动操纵。如果不能手动操控,那么线程是如何在多核CPU上分配的?谢谢

大时代的悲剧的主页 大时代的悲剧 | 初学一级 | 园豆:165
提问于:2010-01-17 02:35
< >
分享
最佳答案
0

1. 单CPU上多线程在某些情况下也可以提高运行速度,比如你的执行过程中有一些IO操作或者对内核对象的调用阻塞等,这时多线程就可以充分利用剩余的CPU资源。

2. 可以调用windows api 来指定某个线程在某个特定的CPU上执行。

API 函数为 SetThreadAffinityMask

参见下面的链接。

http://msdn.microsoft.com/en-us/library/ms686247%28VS.85%29.aspx

如果你不指定,Windows 操作系统会自动选择比较空闲的CPU来进行分配。

收获园豆:30
eaglet | 专家六级 |园豆:17139 | 2010-01-18 07:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册