code: def acquire_read(self):
          
          self.monitor.acquire()
          while self.rwlock < 0 or self.writers_waiting:
              self.readers_ok.wait()
          self.rwlock += 1
          self.monitor.release()
docs: Acquire a read lock. Several threads can hold this typeof lock.
          It is exclusive with write locks.