国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-23 00:32:49
字體:
來源:轉載
供稿:網友

前一篇文章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") 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通榆县| 雷州市| 连城县| 尚义县| 鄂托克旗| 兰州市| 阳城县| 阿拉善右旗| 大竹县| 渝北区| 阿拉善盟| 平武县| 红河县| SHOW| 称多县| 广河县| 上林县| 浏阳市| 太湖县| 嵊泗县| 白水县| 竹山县| 宁南县| 临朐县| 甘孜| 洛阳市| 河间市| 永新县| 金溪县| 克东县| 祁阳县| 柳林县| 呼玛县| 石泉县| 常州市| 青川县| 娄烦县| 阿拉尔市| 赤水市| 石棉县| 南郑县|