gpt4 book ai didi

c# - 如何在 .NET 中将处理器关联设置为线程或任务?

转载 作者:IT王子 更新时间:2023-10-29 04:26:23 29 4
gpt4 key购买 nike

我们能否在 C# 应用程序中设置两个线程或两个任务以不同的处理器关联执行?

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

或者,有没有办法让 TPL(任务并行库)以高优先级执行两个线程/任务以使用 100% CPU?

最佳答案

ProcessProcessThread 对象具有 ProcessorAffinity 类型的 IntPtr 属性,可以直接操作以读取/更改最多 64 个处理器的亲和性:


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 Property

关于c# - 如何在 .NET 中将处理器关联设置为线程或任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510593/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com