def METHOD_NAME(self, wait=True):
    """Acquire the 'read' lock."""
    self.condition.acquire()
    try:
        # see if a synchronous operation is waiting to start
        # or is already running, in which case we wait (or just
        # give up and return)
        if wait:
            while self.current_sync_operation is not None:
                self.condition.wait()
        else:
            if self.current_sync_operation is not None:
                return False
        self.async_ += 1
        log.debug("%s acquired read lock", self)
    finally:
        self.condition.release()
    if not wait:
        return True