写程序 控制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# ,