❶ 死循環,死遞歸和死鎖對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也是大部分出現在演算法中的!