认识死锁之死锁的基本概念
生活随笔
收集整理的這篇文章主要介紹了
认识死锁之死锁的基本概念
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
線程(軟件上的概念):CPU能運行(調度的)最小單位【所以多核系統可以調度多個單位】
?
這里要注意下手機的8核,10核處理器。手機的和電腦的不一樣。一般手機上的都算上了GPU的核心。
CPU頻率:CPU內部有個時鐘電壓這個電壓就是頻率。
當超頻后,就是提高這個時鐘電壓,讓CPU處理指令更快,所以為啥玩某些游戲的時候,某些機子上的CPU很發燙。
一個CPU核心在每一個瞬間智能運行一個計算機指令(屬于某一個線程的指令)。
?
問:計算機為什么能“同時運行”很多個程序?
答:CPU任何時間都不能進行同時運行,這其實是個假象,CPU有一個時間片(CPU把他自己的時間進行分割,切成很多的時間片,每一個時間片很短,應該是那個0.幾微秒的時間)這樣不斷的進行切換(調用不同的線程)就可以實現同時運行這種假象(人的眼睛是感覺不到的)。
阻塞:正在干的這個事情出現了故障,不能干下一個事情。比如上廁所,當拉shi的時候,半卡住的時候,這個時候就屬于阻塞,因為shi半卡住,你不能去擦屁股和提褲子走人。在計算機中,線程獲取了CPU的時間片,但卡在了某一個地方,就會造成阻塞。一個線程進入了一種狀態,沒辦法即使的返回。
?
互斥:一個東西(關鍵數據、或者關鍵代碼段、臨界資源)只能一個線程使用。
?
?
死鎖:猶如坑和紙張,這里只有1個坑和一個人用的紙,一個人用了坑沒帶紙,一個
人帶了紙沒進坑。這種狀態就是死鎖。一個線程需要同時擁有兩個關鍵數據的訪問權限。
【這里要注意,進程與進程之間也可能發送死鎖,如一個進程要讀取一個串口數據同時也想訪問系統注冊表里面的某個文件,然后操作系統把其中的一個串口給占用了,操作系統也想去訪問同樣的一個注冊表文件,這個時候也會發送死鎖】
?
?
造成死鎖的原因:
-
1.資源是有限的;
-
2.對于這些資源,一次只能一個線程訪問;
-
3.當發送死鎖后,操作系統沒有回收這些資源的機制;
-
4.線程之間形成了相互依賴的關系。
?
下一篇是專門講解代碼的:
https://blog.csdn.net/qq78442761/article/details/81293940
總結
以上是生活随笔為你收集整理的认识死锁之死锁的基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt开启本地事件循环(防止界面卡阻塞【卡
- 下一篇: QSettings生成以及解析配置文件