C# CPU关联进程 (转)

Process.ProcessorAffinity 属性:public IntPtr ProcessorAffinity { get; set; }

属性值:位掩码,表示关联进程内的线程可以在其上运行的处理器。默认值取决于计算机上的处理器数。默认值为 2 n -1,其中 n 是处理器数

。 
在 Windows 2000 及更高版本中,进程中的线程可以在处理器间迁移,每次迁移都重新加载处理器缓存。在系统负荷繁重的情况下,指定哪个

处理器运行特定的线程可以减少重新加载处理器缓存的次数,从而提高性能。处理器和线程之间的关联称为处理器关系。

每个处理器均表示为一位。位 0 是处理器一,位 1 是处理器二,依次类推。如果将某位设置为值 1,则将选择相应的处理器进行线程分配。

当您将 ProcessorAffinity 值设置为零时,操作系统的调度算法将设置线程的关联。当 ProcessorAffinity 值设置为任何非零值时,该值被

解释为指定符合选择条件的处理器的位掩码。

设置CPU关联进程语句示例:
Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)2;//2表示第2个CPU

程序示例:
using System;
using System.Diagnostics;
using System.Text;
namespace caAfinity
{
    class Program
    { 
        static void Main(string[] args)
        {
            Console.WriteLine("当前CPU亲和力: {0}", Process.GetCurrentProcess().ProcessorAffinity);
            Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)2;
            Console.WriteLine("当前CPU亲和力: {0}", Process.GetCurrentProcess().ProcessorAffinity);
            while (true)
            { }                        
        }
    }
}

出处:http://caoshugui.blog.163.com/blog/static/25375653200910115329888/

posted @ 2014-07-14 16:55  邹邹  Views(1421)  Comments(0)    收藏  举报