a
    Ad                     @   s$   d dl Z d dlZG dd deZdS )    Nc                   @   s2   e Zd Zdd ZdddZdd ZeZdd	 Zd
S )FIFOLockc                 C   s"   t  | _t  | _t | _d S N)	threadingLock_lock_inner_lockcollectionsdeque_pending_threads)self r   9/var/www/html/stable-diffusion-webui/modules/fifo_lock.py__init__   s    

zFIFOLock.__init__Tc                 C   s   | j X | jd}|r(W d    dS |s<W d    dS t }| j| W d    n1 sd0    Y  |  | j S )NFT)r   r   acquirer   Eventr
   appendwait)r   blockingZlock_acquiredrelease_eventr   r   r   r      s    *zFIFOLock.acquirec                 C   sL   | j 2 | jr | j }|  | j  W d    n1 s>0    Y  d S r   )r   r
   popleftsetr   release)r   r   r   r   r   r      s
    
zFIFOLock.releasec                 C   s   |    d S r   )r   )r   tvtbr   r   r   __exit__$   s    zFIFOLock.__exit__N)T)__name__
__module____qualname__r   r   r   	__enter__r   r   r   r   r   r      s
   
r   )r   r   objectr   r   r   r   r   <module>   s   