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

首頁 > 編程 > Python > 正文

python版本的讀寫鎖操作方法

2020-01-04 17:30:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python版本的讀寫鎖操作方法,結合實例形式分析了Python讀寫鎖機制的原理與實現技巧,需要的朋友可以參考下
 

本文實例講述了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()
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长泰县| 铁岭县| 云梦县| 七台河市| 孝昌县| 公安县| 石景山区| 宁乡县| 金阳县| 黎川县| 富蕴县| 包头市| 宣汉县| 楚雄市| 安国市| 镇雄县| 罗平县| 醴陵市| 静海县| 天全县| 盘山县| 巴青县| 亳州市| 弥渡县| 尖扎县| 汾阳市| 汨罗市| 体育| 黄陵县| 香河县| 蚌埠市| 辽阳县| 固镇县| 天气| 凤凰县| 凤台县| 沂水县| 泾阳县| 保定市| 海口市| 疏附县|