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

首頁 > 編程 > Python > 正文

python避免死鎖方法實例分析

2020-02-23 01:33:09
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 全南县| 康定县| 林西县| 桓台县| 五大连池市| 龙山县| 武威市| 江华| 陇西县| 隆尧县| 南昌市| 潮安县| 建昌县| 崇阳县| 新乡市| 三明市| 玉林市| 十堰市| 凌海市| 商河县| 容城县| 金沙县| 教育| 仙桃市| 太保市| 平邑县| 长垣县| 梁山县| 达州市| 当阳市| 平阴县| 双流县| 雅安市| 双牌县| 松阳县| 武强县| 凤城市| 肃宁县| 石林| 上栗县| 休宁县|