Commit cc53ac5c authored by Thibault VINCENT's avatar Thibault VINCENT
Browse files

fix: read/write mutex improvement

parent 68fb8f45
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ class RWLock(object):
        self.read = self._RLock(self)
        self.write = self._WLock(self)
    
    
    class _Lock(object):
        '''
        '''
@@ -107,27 +108,49 @@ class RWLock(object):
            '''
            self._parent = rwlock
    
    
    class _WLock(_Lock):
        '''
        '''
        def __enter__(self):
            '''
            '''
            self.acquire()
        
        def __exit__(self, exc_type, exc_value, traceback):
            '''
            '''
            self.release()
        
        def acquire(self):
            '''
            '''
            with self._parent._mutex:
                self._parent._writers += 1
            self._parent._writemutex.acquire()
        
        def __exit__(self, exc_type, exc_value, traceback):
        def release(self):
            '''
            '''
            with self._parent._mutex:
                self._parent._writers -= 1
            self._parent._writemutex.release()
    
    
    class _RLock(_Lock):
        '''
        '''
        def __enter__(self):
            '''
            '''
            self.acquire()
        
        def __exit__(self, exc_type, exc_value, traceback):
            '''
            '''
            self.release()
        
        def acquire(self):
            '''
            '''
            self._parent._mutex.acquire()
@@ -138,7 +161,7 @@ class RWLock(object):
            self._parent._readers += 1
            self._parent._mutex.release()
        
        def __exit__(self, exc_type, exc_value, traceback):
        def release(self):
            '''
            '''
            self._parent._mutex.acquire()