国产探花免费观看_亚洲丰满少妇自慰呻吟_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()
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东方市| 麟游县| 枝江市| 堆龙德庆县| 郓城县| 基隆市| 东丽区| 黎川县| 台江县| 定州市| 烟台市| 都江堰市| 石台县| 江陵县| 连平县| 全椒县| 东光县| 六枝特区| 定安县| 浦东新区| 高淳县| 汕头市| 通河县| 土默特左旗| 峡江县| 满洲里市| 社会| 连云港市| 巩留县| 清水河县| 宁南县| 烟台市| 陵川县| 双辽市| 木兰县| 湄潭县| 定州市| 保德县| 贞丰县| 贵州省| 正安县|