❶ 死循环,死递归和死锁对CPU的消耗有什么异同点
死循环,死递归和死锁对CPU的消耗基本相同,但是产生的原因是不一样的。
一、死循环。
例如在VB语言程序中,下列语句:
Do While i=1
print "*"
Loop
就是一个死循环,运行它将无休止地打印*号。
不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环。因此,任何编译系统都不做死循环检查。
在设计程序时,若遇到死循环,我们可以通过按下Ctrl+Pause/Break的方法,结束死循环。
然而,在编程中死循环并不是一个需要避免的问题,相反,在实际应用中,经常需要用到死循环。例如,我们使用的Windows操作系统下的窗口程序中的窗口都是通过一个叫消息循环的死循环实现的。在单片机、嵌入式编程中也经常要用到死循环。在各类编程语言中,死循环都有多种实现的方法,以C语言为例,可分别使用while.for,goto实现。
二、死锁。
两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
计算机系统中,如果系统的资源分配策略不当,更常见的可能是程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。
在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。例如:事务A 获取了行 1 的共享锁。事务 B 获取了行 2 的共享锁。
排他锁,等待事务 B 完成并释放其对行 2 持有的共享锁之前被阻塞。
排他锁,等待事务 A 完成并释放其对行 1 持有的共享锁之前被阻塞。
事务 B 完成之后事务 A 才能完成,但是事务 B 由事务 A 阻塞。该条件也称为循环依赖关系:事务 A 依赖于事务 B,事务 B 通过对事务 A 的依赖关系关闭循环。
三、死机及其对策。
无论是死循环还是死锁,都会造成电脑死机现象。
电脑系统在工作中,有时候会出现鼠标停滞、键盘不能输入命令等情况,这时的系统已经不能接收任何命令,这种情况被称为死机,死机可能是多种原因造成的,比如同时运行了过多的应用程序,程序的使用方法错误,电脑中某一硬件的损坏(比如硬盘或者内存)等都可能引起死机。解决的常用方法有:
同时按下键盘上的控制键加换档键加删除键,在显示的列表中单击【启动任务管理器】命令,弹出【任务管理器】对话框,单击出现问题的程序,再单击【结束任务】按钮,所选程序立即结束运行。在大多数情况下,都可以通过上述方法关闭已经失去响应的程序,并且可以继续在Windows10中操作。
如果键盘已经不能输入任何命令,可按下机箱上的复位键,几秒钟后电脑将重新启动。
如果机箱上没有复位键,可以直接按住机箱上的电源开关几秒钟,关闭电脑电源,稍后,再按机箱上的电源开关重新启动电脑即可。
❷ 有哪些好笑的关于程序员的笑话
家里电脑坏了,让朋友帮忙修。朋友看了之后说是系统坏了,问我有没有系统盘,我说没有之后。朋友看了看四周拿出一根缝衣针,在一张空拍的光盘上刻了起来。我看了一会之后就睡着了,等我醒来之后朋友已经用刻好的光盘帮我重做了系统。
当初学C语言的时候,群里面好像发过这么一个笑话,感觉确实挺有意思的。
❸ 网络游戏为什么会出现bug
因为游戏是大型软件,程序员配合的时候肯定会出错误,这些错误如果当时没被发现,就会成为BUG比如,在C语言中,有时候因为一个算法是死循环,就会是程序出错,或者运行结果异常,而大型游戏都是多种算法作为基础的,在配上绘画美工等手段得到的大型程序,BUG也是大部分出现在算法中的!