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

我们可以在C#应用程序中设置两个线程或两个任务以不同的处理器亲和力执行吗?

我已阅读有关内容,SetThreadAffinityMask但未找到应如何使用的示例。

另外,TPL(任务并行库)是否可以执行两个优先级高的线程/任务以使用100%CPU?


叮当猫咪
浏览 782回答 3
3回答

一只萌萌小番薯

Process和ProcessThread对象具有可以直接操纵以读取/更改多达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属性
打开App,查看更多内容
随时随地看视频慕课网APP