我有一个用C#编写的程序,我使用的是VSTS 2008 + .Net 3.5 + Windows Vista Enterprise x86来开发Windows窗体应用程序。
我当前的计算机是双核CPU,我想设置我的程序的CPU亲和力,以便在特定的CPU上运行,并释放另一个CPU来完成其他工作。任何想法如何做到这一点?通过编码或配置都可以。
更多的背景是,我的程序是CPU密集型的,所以我不想让它占用我计算机上的所有两个CPU资源,我想释放一个CPU,以便我可以快速浏览网络。 : - )
提前谢谢, 乔治答案 0 :(得分:13)
这应该为您释放一个处理器。
要从代码中执行此操作,您可以添加以下语句:
System.Diagnostics.Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr) 1;
干杯!
答案 1 :(得分:7)
执行此操作的Windows API函数是 SetProcessAffinityMask() 和 SetThreadAffinityMask() 。我不知道.NET所以我不能说这些函数是否有包装器,但this似乎暗示其他。
BTW:我同意这些仅在非常具体的情况下是必要的,通常最好让操作系统调度程序处理它。这是其中一个问题,如果你不得不问如何,你可能不应该这样做。答案 2 :(得分:3)
实际上,除非您专门使用更多CPU,否则您的应用程序不会使用多个CPU。如果您使用线程池和/或启动其他线程,您可以使用其他可用内核,但是否则您的应用程序将默认只有一个线程,因此只使用一个CPU。