亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python多線程編程(五):死鎖的形成

系統(tǒng) 1990 0

前一篇文章Python:使用threading模塊實(shí)現(xiàn)多線程編程四[使用Lock互斥鎖]我們已經(jīng)開(kāi)始涉及到如何使用互斥鎖來(lái)保護(hù)我們的公共資源了,現(xiàn)在考慮下面的情況?C

如果有多個(gè)公共資源,在線程間共享多個(gè)資源的時(shí)候,如果兩個(gè)線程分別占有一部分資源并且同時(shí)等待對(duì)方的資源,這會(huì)引起什么問(wèn)題?

死鎖概念

所謂死鎖: 是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去。此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程。 由于資源占用是互斥的,當(dāng)某個(gè)進(jìn)程提出申請(qǐng)資源后,使得有關(guān)進(jìn)程在無(wú)外力協(xié)助下,永遠(yuǎn)分配不到必需的資源而無(wú)法繼續(xù)運(yùn)行,這就產(chǎn)生了一種特殊現(xiàn)象死鎖。

復(fù)制代碼 代碼如下:

'''
Created on 2012-9-8
?
@author: walfred
@module: thread.TreadTest5
'''??
import threading?
?
counterA = 0?
counterB = 0?
?
mutexA = threading.Lock()?
mutexB = threading.Lock()?
?
class MyThread(threading.Thread):?
??? def __init__(self):?
??????? threading.Thread.__init__(self)?
?
??? def run(self):?
??????? self.fun1()?
??????? self.fun2()?
?
??? def fun1(self):?
??????? global mutexA, mutexB?
??????? if mutexA.acquire():?
??????????? print "I am %s , get res: %s" %(self.name, "ResA")?
?
??????????? if mutexB.acquire():?
??????????????? print "I am %s , get res: %s" %(self.name, "ResB")?
??????????????? mutexB.release()?
?
??????? mutexA.release()??
?
??? def fun2(self):?
??????? global mutexA, mutexB?
??????? if mutexB.acquire():?
??????????? print "I am %s , get res: %s" %(self.name, "ResB")?
?
??????????? if mutexA.acquire():?
??????????????? print "I am %s , get res: %s" %(self.name, "ResA")?
??????????????? mutexA.release()?
?
??????? mutexB.release()??
?
if __name__ == "__main__":?
??? for i in range(0, 100):?
??????? my_thread = MyThread()?
??????? my_thread.start()

代碼中展示了一個(gè)線程的兩個(gè)功能函數(shù)分別在獲取了一個(gè)競(jìng)爭(zhēng)資源之后再次獲取另外的競(jìng)爭(zhēng)資源,我們看運(yùn)行結(jié)果:

復(fù)制代碼 代碼如下:

I am Thread-1 , get res: ResA
I am Thread-1 , get res: ResB
I am Thread-2 , get res: ResAI am Thread-1 , get res: ResB

可以看到,程序已經(jīng)掛起在那兒了,這種現(xiàn)象我們就稱之為”死鎖“。

避免死鎖

避免死鎖主要方法就是:正確有序的分配資源,避免死鎖算法中最有代表性的算法是Dijkstra E.W 于1968年提出的銀行家算法。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 美女性色| 免费在线观看黄色的网站 | 中文字幕在线播 | 一级毛片一级毛片一级毛片 | 在线观看国产一区二三区 | 一级毛片成人免费看免费不卡 | 天天草狠狠干 | 亚洲国产精品久久久久网站 | 国产精品视频福利 | 日本韩国欧美一区 | 四虎永久在线精品国产 | 立即播放免费毛片一级 | 久久爱综合久久爱com | 日本亚洲成高清一区二区三区 | 久久lu| 亚洲视频综合 | 香蕉网站在线观看 | 中文字幕一区二区三区免费视频 | 最新中文字幕在线播放 | 999视频网| 欧美午夜在线 | 亚洲一区精品视频在线 | 国产精品一国产精品免费 | 另类日本人xxxxbbbb | 亚洲热久久 | 久久伊人一区二区三区四区 | 精品亚洲综合在线第一区 | 久久99久久99精品免观看 | 亚洲精品久久麻豆蜜桃 | 四虎永久在线精品 | 免费观看欧美精品成人毛片 | 在线视频欧美精品 | 亚洲国产欧美另类 | 韩国午夜剧场 | 亚洲欧美日韩国产专区一区 | 7799国产精品久久久久99 | 伊人情人综合成人久久网小说 | 成人a一级毛片免费看 | 久久一区二区三区精品 | 欧美不卡视频在线 | 欧美日韩在线成人免费视频大全 |