当前位置:编程学习 > C#/ASP.NET >>

写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线2 通过C#指定线程运行的 CPU

http://www.zzzyk.com/kf/201110/107760.html连接中的写了通过C#控制CPU的占用率。

 

通过C#还可以指定当前线程的运行在哪个CPU上。

 

通过

 
System.Diagnostics.Process p = Process.GetCurrentProcess(); 
            p.ProcessorAffinity = (IntPtr)0x0001; 

 

Process.ProcessorAffinity 设置当前CPU的屏蔽字,0x0001表示选用一号CPU,0x0002表示选用2号CPU。

 

代码如下:

 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Diagnostics; 
 
namespace cpu_4_2_csharp 

    class Program 
    { 
        static void Main(string[] args) 
        { 
            System.Diagnostics.Process p = Process.GetCurrentProcess(); 
            p.ProcessorAffinity = (IntPtr)0x0001; 
 
            const int SAMPLING_COUNT = 200; 
            const double PI = 3.14159; 
            const int TOTAL_AMPLITUDE = 250; // the length of each time piece 
            //const int system_busy = 10; // take the system cpu consume into consideration 
 
            double[] busySpan=new double[SAMPLING_COUNT]; 
            int amplitude = (TOTAL_AMPLITUDE) / 2; 
            double radian = 0.0; 
            double radianIncreament = 2.0 / (double)SAMPLING_COUNT; 
 
            for (int i = 0; i < SAMPLING_COUNT; i++) 
            { 
                busySpan[i] = (double)(amplitude + Math.Sin(PI * radian) * amplitude); 
                radian += radianIncreament; 
            } 
 
            int startTick = Environment.TickCount; 
 
            for (int j = 0; ; j = (j + 1) % SAMPLING_COUNT) 
            { 
                startTick = Environment.TickCount; 
                while ((Environment.TickCount - startTick) < busySpan[j]) 
                { 
                    // 
                } 
                System.Threading.Thread.Sleep(TOTAL_AMPLITUDE - (int)busySpan[j]); 
            } 
        } 
    } 

程序的运行结果如图:

 

 \

\

 

可以通过调整参数使曲线更加圆润一些,但是我调试了好久,也就得到了上面的截图。不过整体来说,这个曲线图要比http://www.zzzyk.com/kf/201110/107760.html中的曲线图好看的多了。

 

摘自:Watkins.Song

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,