
    \jW                          d dl Z  G d d      Zy)    Nc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)ReadWriteLockzZ A lock object that allows many simultaneous "read locks", but
    only one "write lock." c                 j    t        j                  t        j                               | _        d| _        y )Nr   )	threading	ConditionLock_read_ready_readersselfs    >/root/env/lib/python3.12/site-packages/ldclient/impl/rwlock.py__init__zReadWriteLock.__init__   s#    $..y~~/?@    c                     | j                   j                          	 | xj                  dz  c_        | j                   j                          y# | j                   j                          w xY w)zS Acquire a read lock. Blocks only if a thread has
        acquired the write lock.    N)r	   acquirer
   releaser   s    r   rlockzReadWriteLock.rlock   sN     	  "	'MMQM$$&D$$&s   A A(c                 "   | j                   j                          	 | xj                  dz  c_        | j                  s| j                   j                          | j                   j	                          y# | j                   j	                          w xY w)z Release a read lock. r   N)r	   r   r
   
notify_allr   r   s    r   runlockzReadWriteLock.runlock   se      "	'MMQM==  ++-$$&D$$&s   ;A2 2Bc                     | j                   j                          | j                  dkD  r+| j                   j                          | j                  dkD  r*yy)zW Acquire a write lock. Blocks until there are no
        acquired read or write locks. r   N)r	   r   r
   waitr   s    r   lockzReadWriteLock.lock   sB     	  "mma!!# mmar   c                 8    | j                   j                          y)z Release a write lock. N)r	   r   r   s    r   unlockzReadWriteLock.unlock&   s      "r   N)	__name__
__module____qualname____doc__r   r   r   r   r    r   r   r   r      s     ''$#r   r   )r   r   r!   r   r   <module>r"      s    $# $#r   