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