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

首頁 > 編程 > Python > 正文

python避免死鎖方法實例分析

2019-11-25 17:18:42
字體:
來源:轉載
供稿:網友

本文實例講述了python避免死鎖方法。分享給大家供大家參考。具體分析如下:

當兩個或者更多的線程在等待資源的時候就會產生死鎖,兩個線程相互等待。
在本文實例中 thread1 等待thread2釋放block , thread2等待thtead1釋放ablock,
 
避免死鎖的原則:

1. 一定要以一個固定的順序來取得鎖,這個列子中,意味著首先要取得alock, 然后再去block

2. 一定要按照與取得鎖相反的順序釋放鎖,這里,應該先釋放block,然后是alock

import threading ,timea = 5alock = threading.Lock()b = 5block = threading.Lock()def thread1calc():  print "thread1 acquiring lock a"  alock.acquire()  time.sleep(5)  print "thread1 acquiring lock b"  block.acquire()  a+=5  b+=5  print "thread1 releasing both locks"  block.release()  alock.release()def thread2calc():  print "thread2 acquiring lock b"  block.acquire()  time.sleep(5)  print "thread2 acquiring lock a"  alock.acquire()  time.sleep(5)  a+=10  b+=10  print "thread2 releasing both locks"  block.release()  alock.release()t = threading.Thread(target = thread1calc)t.setDaemon(1)t.start()t = threading.Thread(target = thread2calc)t.setDaemon(2)t.start()while 1:  time.sleep(300)

輸出:

thread1 acquiring lock athread2 acquiring lock bthread1 acquiring lock bthread2 acquiring lock a

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华亭县| 大港区| 汉中市| 镇沅| 龙里县| 松滋市| 肃宁县| 保山市| 阳城县| 成武县| 汉阴县| 勐海县| 莫力| 尼勒克县| 申扎县| 虹口区| 麦盖提县| 榆社县| 东平县| 元氏县| 永川市| 丰县| 兰溪市| 大悟县| 西林县| 保靖县| 堆龙德庆县| 博乐市| 扶风县| 九龙县| 海晏县| 独山县| 荥阳市| 五大连池市| 辽源市| 张掖市| 马鞍山市| 六安市| 灵台县| 闽清县| 阳原县|