'Provide a context manager for the "read" lock.
This method makes use of :meth:`.AbstractFileLock.acquire_read_lock`
and :meth:`.AbstractFileLock.release_read_lock`'

@contextmanager
def read(self):

    self.acquire_read_lock(True)
    try:
        (yield)
    finally:
        self.release_read_lock()
