zoukankan      html  css  js  c++  java
  • 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)
                { }                       
            }
        }
    }

    测试双核多线程程序,未配置情况下Process.GetCurrentProcess().ProcessorAffinity=3,即11。
    CPU使用情况:

    设置Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)2; 后CPU使用情况:

    多线程经常会占满CPU,通过此方法可在多核系统中限制程序对CPU的占用。

    详细测试需要用2U 2路4核服务器测试才能得出。

    以下方法可以获取CPU个数,但无法获取核心个数。
                using System.Management;
                ManagementClass m = new ManagementClass("Win32_Processor");
                ManagementObjectCollection mn = m.GetInstances();

  • 相关阅读:
    K2 的Workspace 遭遇400 RequestLength 错误修复
    从APM角度上看:NoSQL和关系数据库并无不同
    Mono的Google Native Client(NaCl)技术支持
    FastReport.Mono 一款为Mono Framework设计的功能全面的报表生成工具
    修改 Windows Host 文件工具
    采用Mono进行移动开发图书推荐
    MonoDevelop添加NuGet支持
    WCF Service Hosting的线程关联性Mono实现比.NET统一?
    [转]WiX v3.7——支持MSBuild、自更新及引用计数
    [转]度量驱动开发
  • 原文地址:https://www.cnblogs.com/lsqandzy/p/4301756.html
Copyright © 2011-2022 走看看