Geo*_*ge2 11 .net c# cpu affinity visual-studio-2008
我有一个用C#编写的程序,我使用的是VSTS 2008 + .Net 3.5 + Windows Vista Enterprise x86来开发Windows窗体应用程序.
我目前的计算机是双核CPU,我想设置我的程序的CPU亲和力,以便在特定的CPU上运行,并释放另一个CPU来做其他工作.任何想法如何做到这一点?通过编码或配置都可以.
更多的背景是,我的程序是CPU密集型的,所以我不想让它占用我计算机上的所有两个CPU资源,我想释放一个CPU,以便我可以快速浏览网络.:-)
乔治,提前谢谢
Gau*_*rav 13
这应该为您释放一个处理器.
要从代码中执行此操作,您可以添加以下语句:
System.Diagnostics.Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr) 1;
Run Code Online (Sandbox Code Playgroud)
干杯!
执行此操作的Windows API函数是SetProcessAffinityMask()和SetThreadAffinityMask().我不知道这样的.NET我不能说是否有围绕这些函数的包装,但是这似乎并非如此.
顺便说一句:我同意这些只在非常特殊的情况下是必要的,通常最好让OS调度程序处理它.这是其中一个问题,如果你不得不问如何,你可能不应该这样做.
实际上,您的应用程序不会使用多个 CPU,除非您专门采取一些措施来利用更多 CPU。如果您使用线程池和/或启动额外的线程,您可以使用额外的可用核心,但否则您的应用程序默认只有一个线程,因此只使用一个 CPU。
归档时间: |
|
查看次数: |
10077 次 |
最近记录: |