日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线程同步之——互斥量及死锁问题

發布時間:2025/4/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程同步之——互斥量及死锁问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

互斥量:
多個線程同時訪問共享數據時可能會沖突,這跟信號的可重性是同樣的問題。如 果兩個線程都要把某個全局變量增加1,這個操作在某平臺需要三條指令完成:

1. 從內存讀變量值到寄存器

2. 寄存器的值加1

3. 將寄存器的值寫回內存

先舉個例子:創建兩個線程,各把counter增加5000次,正常情況下最后counter應該等于10000。

代碼實現如下:

結果:

可以看到,每次運行程序的結果都不一樣。說明在調用過程中發生了互斥現象。

解決辦法:加互斥鎖

實現多線程同步可以引互斥鎖(Mutex,Mutual Exclusive Lock),獲得鎖的線程可以完成“讀-修改-寫”的操作,然后釋放鎖給其它線程,沒有獲得鎖的線程只能等待不能訪問共享數據,這樣“讀-修改-寫”三步操作組成個原操作,要么都執,要么都不執,不會執到中間被打斷,也不會在其它處理器上并做這個操作。 Mutexpthread_mutex_t類型的變量表,可以這樣初始化和銷毀。

相關函數如下:

pthread_mutex_init函 數初始化的Mutex可以pthread_mutex_destroy銷毀。 如果Mutex變量是靜態分配的(全局變量 或static變量),也可以宏定義PTHREAD_MUTEX_INITIALIZER來初始化,相當于 pthread_mutex_init初始化并且attr參數為NULL。 Mutex的加鎖和解鎖操作可以下列函數


一個線程可以調pthread_mutex_lock獲得Mutex,如果這時另一個線程已經調pthread_mutex_lock獲得了該Mutex,則當前線程需要掛起等待,直到另一個線程調pthread_mutex_unlock釋放Mutex,當前線程被喚醒,才能獲得該Mutex并繼續執。如果這個線程既想獲得鎖,又不想掛起等待,可以調pthread_mutex_trylock,如果Mutex已經被 另一個線程獲得,這個函數會失敗返回EBUSY,不會使線程掛起等待。

現在給上一個例子加上互斥鎖,代碼如下:

運行結果如下:


可以看到,加鎖后實現了線程同步。


死鎖原理:

根據操作系統中的定義:死鎖是指在一組進程中的各個進程均占有不會釋放的資源,但因互相申請被其他進程所占用不會釋放的資源而處于的一種永久等待狀態。

死鎖的四個必要條件:
1、互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
2、請求與保持條件(Hold and wait):已經得到資源的進程可以再次申請新的資源。
3、非剝奪條件(No pre-emption):已經分配的資源不能從相應的進程中被強制地剝奪。
4、循環等待條件(Circular wait):系統中若干進程組成環路,該環路中每個進程都在等待相鄰進程正占用的資源

解決死鎖的基本方法:

1、預防死鎖:

資源一次性分配:(破壞請求和保持條件)

可剝奪資源:即當某進程新的資源未滿足時,釋放已占有的資源(破壞不可剝奪條件)。

資源有序分配法:系統給每類資源賦予一個編號,每一個進程按編號遞增的順序請求資源,釋放則相反(破壞環路等待條件)。?

2、避免死鎖:

預防死鎖的幾種策略,會嚴重地損害系統性能。因此在避免死鎖時,要施加較弱的限制,從而獲得較滿意的系統性能。由于在避免死鎖的策略中,允許進程動態地申請資源。因而,系統在進行資源分配之前預先計算資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給進程;否則,進程等待。其中最具有代表性的避免死鎖算法是銀行家算法。?

3、檢測死鎖

首先為每個進程和每個資源指定一個唯一的號碼;

然后建立資源分配表和進程等待表。

4、解除死鎖:

當發現有進程死鎖后,便應立即把它從死鎖狀態中解脫出來,常采用的方法有:

剝奪資源:從其它進程剝奪足夠數量的資源給死鎖進程,以解除死鎖狀態;

撤消進程:可以直接撤消死鎖進程或撤消代價最小的進程,直至有足夠的資源可用,死鎖狀態.消除為止;所謂代價是指優先級、運行代價、進程的重要性和價值等。

?

?


轉載于:https://blog.51cto.com/760470897/1766881

總結

以上是生活随笔為你收集整理的线程同步之——互斥量及死锁问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美三日本三级少妇99 | 欧美精品三区 | 国产视频精品自拍 | 神马影院午夜伦理片 | 污污视频网站在线 | www狠狠干 | 国产第一亚洲 | 日韩欧美卡一卡二 | av激情久久 | 免费午夜影院 | 奇米影视第四色7777 | 成为性瘾网黄的yy对象后 | 国产精品久久久毛片 | 天码人妻一区二区三区在线看 | 国产精品免费视频观看 | 无码人妻精品一区二区蜜桃网站 | 色综合天天综合网天天看片 | 极品美妇后花庭翘臀娇吟小说 | 色婷婷久 | 亚洲春色一区二区三区 | 麻豆极品 | 亚洲欧美国产高清va在线播放 | 毛片毛片 | 久久精品99 | 四虎午夜影院 | 国产三级影院 | av免费播放网站 | 伊人亚洲影院 | 超碰操| 欧美日韩精选 | 国产人成一区二区三区影院 | 久久久久久91亚洲精品中文字幕 | 欧美麻豆 | 精品国产无码一区二区三区 | 国产精品无码免费专区午夜 | 双性娇喘浑圆奶水h男男漫画 | 美女被草出白浆 | 在线观看黄 | 国产亚洲精品久久久久久打不开 | 在线免费福利视频 | 91中文在线 | 影院色原网站 | 人妻av无码一区二区三区 | 日韩免费观看一区二区三区 | 人禽l交视频在线播放 视频 | 娇喘顶撞深初h1v1 | 伦理片久久 | 中文字幕日韩在线视频 | 夜夜爽日日澡人人添 | 亚洲色图国产视频 | 日韩国产成人无码av毛片 | 肉丝肉足丝袜一区二区三区 | 欧美xxxxhd | 男生和女生一起差差差视频 | 成人av中文解说水果派 | 喷水少妇 | 中文在线不卡 | 伦理久久 | 91网站免费在线观看 | 成人av无码一区二区三区 | 日本美女一区 | 一区二区三区免费在线观看视频 | 精品人妻一区二区三区四区五区 | 欧美wwwwww| 黄色91免费版 | 北条麻妃一区二区三区四区五区 | 奇米成人影视 | 少妇全黄性生交片 | 国产伦精品一区二区三区照片 | 中文字幕丰满乱子伦无码专区 | 不卡在线播放 | 大地资源二中文在线影视免费观看 | 免费激情网站 | 乱人伦xxxx国语对白 | 久久久久久久毛片 | 美女的奶胸大爽爽大片 | 2019自拍偷拍 | 97人妻一区二区精品视频 | 午夜精 | 东北少妇bbbb搡bbb搡 | 总裁憋尿呻吟双腿大开憋尿 | 日批在线观看 | 国产91精品久久久久久久网曝门 | 免费在线观看视频 | 日本日韩欧美 | 青青草视频免费播放 | 2级黄色片 | 一区二区三区丝袜 | 99热99| 人妻熟女一区 | 黄色片毛片 | 亚洲一区精品在线观看 | 三级a毛片 | 国产精品99久久久久久久 | 免费的a级片 | 一区二区中文字幕在线观看 | 天堂网在线资源 | 国产精品久久不卡 | 久久亚洲中文字幕无码 |