Exemple #1
0
class _RLock(object):
    def __init__(self):
        self._lock = ReentrantLock()
        self.__owner = None

    def acquire(self, blocking=1):
        if blocking:
            self._lock.lock()
            self.__owner = currentThread()
            return True
        else:
            return self._lock.tryLock()

    def __enter__(self):
        self.acquire()
        return self

    def release(self):
        assert self._lock.isHeldByCurrentThread(), \
            "release() of un-acquire()d lock"
        self.__owner = None
        self._lock.unlock()

    def __exit__(self, t, v, tb):
        self.release()

    def locked(self):
        return self._lock.isLocked()

    def _is_owned(self):
        return self._lock.isHeldByCurrentThread()