为了账号安全,请及时绑定邮箱和手机立即绑定

如何在.NET中设置处理器关联性?

如何在.NET中设置处理器关联性?

叮当猫咪 2019-09-26 09:59:28
我们可以在C#应用程序中设置两个线程或两个任务以不同的处理器亲和力执行吗?我已阅读有关内容,SetThreadAffinityMask但未找到应如何使用的示例。另外,TPL(任务并行库)是否可以执行两个优先级高的线程/任务以使用100%CPU?
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

ProcessProcessThread对象具有可以直接操纵以读取/更改多达64个处理器的相似ProcessorAffinity性的IntPtr类型的属性:

using System.Diagnostics;...
  Process Proc = Process.GetCurrentProcess();
  long AffinityMask = (long)Proc.ProcessorAffinity;
  AffinityMask &= 0x000F; // use only any of the first 4 available processors
  Proc.ProcessorAffinity = (IntPtr)AffinityMask;

  ProcessThread Thread = Proc.Threads[0];
  AffinityMask = 0x0002; // use only the second processor, despite availability
  Thread.ProcessorAffinity = (IntPtr)AffinityMask;...

您还可以使用线程的IdealProcessor属性,使调度程序更喜欢在指定的处理器上运行线程(无保证)。

是的,就是这么简单:)

参考:MSDN ProcessThread.ProcessorAffinity属性


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 781 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信