c#高难度问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:38:51
通常我自己编一个大型程序,运算时,cpu总是100%,而实际上,我们常用的程序占用cpu很少,它们怎么实现的?
比如说:在玩一个大型游戏的时候,cpu也不会占用太多。
而我们编一个普通的小程序,比如画图什么的,运算时cpu就100%。

没有进入死循环。

多线程以及算法优化

说实话这个不算什么高难度问题。。。

很有可能你的程序进入死循环了,就是没有在适当的时候终止循环,那么这个程序就会一直运行,计算下去,直到资源耗尽!

打个比方:
这个程序:
double i,sum=1;
for(i=100,i>0,i++)
{
sum=sum*i
}
console.readline(sum)
console.readkey();

这个程序你运行起来,一样会卡死的。因为他不会跳出循环(大概程序是这么写的,很久没用C#了,能看懂就行)

应该是一直在进行着什么循环吧?循环的时候要累加,需要用到cpu,用多线程就不用这么高了..

因为你的程序一直在运行,我做个比方给解释,你现在把浏览器变小点,然后打开进程管理查看cpu,这时你点击住浏览器,到处拖动(不是拉动)你会发现cpu=100%工作,因为GDI+在工作,同样你的画图程序要响应paint事件,你的paint不断的刷新图像,如果你用到双缓冲也许会好些。

你定期Thread.Sleep(50)一下就好了。

执行程序的时候CPU使用率可以用线程休眠来降低,而且效果不仅仅是一点点!这个你可以尝试,写游戏一般都会用到线程休眠的吧?你用了休眠CPU使用率瞬间下降了N多,甚至有时候可以到1%
Thread.Sleep