我们可以在C#应用程序中设置两个线程或两个任务以不同的处理器亲和力执行吗?我已阅读有关内容,SetThreadAffinityMask但未找到应如何使用的示例。另外,TPL(任务并行库)是否可以执行两个优先级高的线程/任务以使用100%CPU?
3 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
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属性
- 3 回答
- 0 关注
- 781 浏览
添加回答
举报
0/150
提交
取消