一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python多線程編程(五):死鎖的形成

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

2020-05-30 23:30腳本之家 Python

這篇文章主要介紹了Python多線程編程(五):死鎖的形成,本文講解了死鎖的概念、死鎖示例、避免死鎖的方法等內容,需要的朋友可以參考下

前一篇文章Python:使用threading模塊實現多線程編程四[使用Lock互斥鎖]我們已經開始涉及到如何使用互斥鎖來保護我們的公共資源了,現在考慮下面的情況–

如果有多個公共資源,在線程間共享多個資源的時候,如果兩個線程分別占有一部分資源并且同時等待對方的資源,這會引起什么問題?

死鎖概念

所謂死鎖: 是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。 由于資源占用是互斥的,當某個進程提出申請資源后,使得有關進程在無外力協助下,永遠分配不到必需的資源而無法繼續運行,這就產生了一種特殊現象死鎖。

復制代碼 代碼如下:

'''
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()

 

代碼中展示了一個線程的兩個功能函數分別在獲取了一個競爭資源之后再次獲取另外的競爭資源,我們看運行結果:

復制代碼 代碼如下:

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

可以看到,程序已經掛起在那兒了,這種現象我們就稱之為”死鎖“。

 

避免死鎖

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎884aa永久播放地址http | 欧美一区二区三区久久久 | 欧美人禽杂交av片 | xxx久久| 成人私人影院在线观看网址 | 精品性影院一区二区三区内射 | 日本护士撒尿xxxx18 | 国产一区二区三区高清视频 | 国产福利不卡视频在免费 | 32pao强力打造免费高速高 | 王淑兰李思雨李铁柱乡村小说免费 | 毛片段| 44444色视频在线观看 | 欧美亚洲国产综合在线 | 欧美大美bbb和大白屁股 | 精品国产免费第一区二区三区日韩 | 极品手交handjobtattoo | 国产成人精视频在线观看免费 | 清纯漂亮女友初尝性过程 | 无遮挡h肉动漫高清在线 | 亚洲精品丝袜在线一区波多野结衣 | 91极品女神久色在线播放 | 国产亚洲女在线线精品 | 日韩一级片在线免费观看 | 2019nv天堂| 国产成人理在线观看视频 | 黑人巨荃大战乌克兰美女 | 成人青青草 | 亚洲国产经典 | 亚洲黄色片免费看 | 办公室出轨秘书高h | 日韩资源 | bedfriend泰剧全集免费观看 | 九草视频在线 | 国内精品中文字幕 | 五月色婷婷久久综合 | 二次元美女脱裤子让男人桶爽 | 虎四免费入口 | 99在线观看视频免费 | 艾秋麻豆果冻传媒老狼仙踪林 | 欧美色图亚洲天堂 |