MCPcopy Create free account
hub / github.com/ActiveState/code / Reader

Class Reader

recipes/Python/577803_ReaderWriter_lock_priority/recipe-577803.py:118–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116 self.__rw_lock.writer_release()
117
118class Reader(threading.Thread):
119 def __init__(self, buffer_, rw_lock, init_sleep_time, sleep_time):
120 """
121 @param buffer_: common buffer shared by the readers and writers
122 @type buffer_: list
123 @type rw_lock: L{RWLock}
124 @param init_sleep_time: sleep time before doing any action
125 @type init_sleep_time: C{float}
126 @param sleep_time: sleep time while in critical section
127 @type sleep_time: C{float}
128 """
129 threading.Thread.__init__(self)
130 self.__buffer = buffer_
131 self.__rw_lock = rw_lock
132 self.__init_sleep_time = init_sleep_time
133 self.__sleep_time = sleep_time
134 self.buffer_read = None
135 """a copy of a the buffer read while in critical section"""
136 self.entry_time = None
137 """Time of entry to the critical section"""
138 self.exit_time = None
139 """Time of exit from the critical section"""
140
141 def run(self):
142 time.sleep(self.__init_sleep_time)
143 self.__rw_lock.reader_acquire()
144 self.entry_time = time.time()
145 time.sleep(self.__sleep_time)
146 self.buffer_read = copy.deepcopy(self.__buffer)
147 self.exit_time = time.time()
148 self.__rw_lock.reader_release()
149
150class RWLockTestCase(unittest.TestCase):
151 def test_readers_nonexclusive_access(self):

Calls

no outgoing calls