随机数生成占用cpu太大的问题
有这样一个随机数仿真器,每隔10秒产生一个随机数组,数组大小约为200。但总是cpu占用太大,不知道哪里出了问题。
#region Create cyklic timer
int timerInterval = 10*1000; // 单位:ms
TimerCallback timerDelegate = new TimerCallback(CbTimer);
Timer timer = new Timer(timerDelegate,null,1000,timerInterval);
#endregion
while (true) // 主线程停下来等待Timer对象的终止
{
Thread.Sleep(0);
}
public static void CbTimer(object obj)
{
Hashtable data = new Hashtable();
Random rand1=new Random();
for (int i = 0;i < alEnergyTag.Count; i++)
{
RandomData[i]=rand1.Next(start)*0.01*(i+1);
data.Add(alEnergyTag[i],RandomData[i]);
}
TagKernel.WriteData(data); // write to tagkernel
Console.WriteLine( "L1OPCSimulator send "+ data.Count + "个标签 to TagKernel ");
foreach(DictionaryEntry de in data)
{
Console.WriteLine(System.DateTime.Now + " " + de.Key.ToString ()+ " " + de.Value);
}
//random seed change
start+=10;
}
------解决方案--------------------while (true) // 主线程停下来等待Timer对象的终止
{
Thread.Sleep(0);
}
这种语句留着干嘛!很耗CPU的!!!!
------解决方案--------------------用个timer 10秒调用一次产生随机数的函数就可以了
为什么要
while (true) // 主线程停下来等待Timer对象的终止
{
Thread.Sleep(0);
}
或者不用timer 开个线程产生随机数
while
{
//产生随机数;
sleep(10000);
}