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

首頁 > 編程 > Python > 正文

python版本的讀寫鎖操作方法

2019-11-25 16:49:35
字體:
來源:轉載
供稿:網友

本文實例講述了python版本的讀寫鎖操作方法。分享給大家供大家參考,具體如下:

最近要用到讀寫鎖的機制,但是python2.7的自帶庫里居然木有.
網上講讀寫鎖的例子眾多,但是原理簡單,代碼明晰的卻不多見, 索性自己寫個.

讀寫鎖一般用于多個讀者,1個或多個寫者同時訪問某種資源的時候。多個讀者之間是可以共享資源的,但是寫者與讀者之間,寫者與寫者之間是資源互斥的。

這也就是說同時可以有多個讀者或一個寫者處于工作狀態。

細分下來,讀寫鎖可以分為三類,讀者優先,寫者優先和公開策略。

第一種,讀者優先,
目的是保證讀者可以盡可能的不需要等待就獲取資源。
實現的要點,寫者方面比較簡單,只需要一個鎖就能控制是否可寫。
讀者方面,在第一個讀者到來的時候就要阻止寫者,最后一個讀者離開之后再開放寫者。這里就存在一個讀者計數器的問題,這個計數器是需要在各讀者之間共享的,所以需要一個額外的鎖來確保該計數器的加減操作的原子性。

實現代碼:

定義一個類RWLock,并作簡單的初始化

import threadingclass RWLock(object):  def __init__(self):    self.rlock = threading.Lock()    self.wlock = threading.Lock()    self.reader = 0

寫者鎖

def write_acquire(self):  self.wlock.acquire()def write_release(self):  self.wlock.release()

讀者鎖

def read_acquire(self):  self.rlock.acquire()  self.reader += 1  if self.reader == 1:    self.wlock.aquire()  self.rlock.release()def read_release(self):  self.rlock.acquire()  self.reader -= 1  if self.reader == 0:    self.wlock.release()  self.rlock.release()

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天津市| 江津市| 丹阳市| 阿荣旗| 广饶县| 盱眙县| 杨浦区| 吉首市| 罗平县| 五寨县| 互助| 尚义县| 绥中县| 沁源县| 延吉市| 焉耆| 衡南县| 贡觉县| 平和县| 呼图壁县| 宜宾县| 泰州市| 丽水市| 新丰县| 泸定县| 澎湖县| 抚松县| 石景山区| 漳平市| 双城市| 小金县| 太仓市| 隆尧县| 农安县| 嘉定区| 民和| 广州市| 谷城县| 云安县| 尤溪县| 栾川县|