o yf!@s$ddlZddlZGdddeZdS)Nc@s2eZdZddZd ddZddZeZdd Zd S) FIFOLockcCs"t|_t|_t|_dSN) threadingLock_lock _inner_lock collectionsdeque_pending_threads)selfr bC:\Users\Luke\Documents\Stable diffusion\Automatic1111\stable-diffusion-webui\modules\fifo_lock.py__init__s  zFIFOLock.__init__TcCs|j.|jd}|r WddS|s WddSt}|j|Wdn1s4wY||jS)NFT)rracquirerEventr appendwait)r blockingZ lock_acquired release_eventr r r r s  zFIFOLock.acquirecCsN|j|jr|j}||jWddS1s wYdSr)rr popleftsetrrelease)r rr r r rs   "zFIFOLock.releasecCs |dSr)r)r tvtbr r r __exit__$s zFIFOLock.__exit__N)T)__name__ __module__ __qualname__rrr __enter__rr r r r rs   r)rrobjectrr r r r s