读书人

随机数生成占用cpu太大的有关问题

发布时间: 2012-02-01 16:58:19 作者: rapoo

随机数生成占用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);
}

读书人网 >C#

热点推荐