<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]/                 @   s  d  d d d d d g Z  d d l Z d d l Z d d l Z d d l Z d d l m Z d	 d
 l m Z d	 d l m	 Z	 d	 d l m
 Z
 y d d l m Z m Z Wn* e k
 r e d d d d   Yn Xe e d   \ Z Z e j j Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d    d  e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e j  Z d S)LockRLock	SemaphoreBoundedSemaphore	ConditionEvent    N)time   )context)process)util)SemLock
sem_unlinkz*This platform lacks a functioning sem_openz( implementation, therefore, the requiredz+ synchronization primitives needed will notz function, see issue 3770.   c               @   s   e  Z d  Z e j   Z d d   Z e d d    Z d d   Z	 d d   Z
 d	 d
   Z d d   Z d d   Z e d d    Z d S)r   c            C   sK  | d  k r t  j j   } | j   } t j d k p? | d k } xb t d  D]H } y, t j | | | |  j	   |  } |  _
 Wn t k
 r YqO XPqO Wt d   t j d | j  |  j   t j d k r d d   }	 t j |  |	  |  j
 j d  k	 rGd d	 l m }
 |
 |  j
 j  t j |  t j |  j
 j f d
 d d  S)Nwin32forkd   zcannot find name for semaphorezcreated semlock with handle %sc             S   s   |  j  j   d  S)N)_semlock_after_fork)obj r   0/opt/alt/python35/lib64/python3.5/synchronize.pyr   H   s    z%SemLock.__init__.<locals>._after_forkr	   )registerexitpriorityr   )r
   _default_contextget_contextget_start_methodsysplatformrange_multiprocessingr   
_make_namer   FileExistsErrorr   debughandle_make_methodsregister_after_forknamesemaphore_trackerr   Finalize_cleanup)selfkindvaluemaxvaluectxr'   Z
unlink_nowislr   r   r   r   r   __init__3   s.    
zSemLock.__init__c             C   s(   d d l  m } t |   | |   d  S)Nr	   )
unregister)r(   r3   r   )r'   r3   r   r   r   r*   U   s    
zSemLock._cleanupc             C   s"   |  j  j |  _ |  j  j |  _ d  S)N)r   acquirerelease)r+   r   r   r   r%   [   s    zSemLock._make_methodsc             C   s   |  j  j   S)N)r   	__enter__)r+   r   r   r   r6   _   s    zSemLock.__enter__c             G   s   |  j  j |   S)N)r   __exit__)r+   argsr   r   r   r7   b   s    zSemLock.__exit__c             C   sb   t  j |   |  j } t j d k r@ t  j   j | j  } n	 | j } | | j | j	 | j
 f S)Nr   )r
   assert_spawningr   r   r   get_spawning_popenduplicate_for_childr$   r,   r.   r'   )r+   r1   hr   r   r   __getstate__e   s    		zSemLock.__getstate__c             C   s8   t  j j |   |  _ t j d | d  |  j   d  S)Nz recreated blocker with handle %rr   )r    r   _rebuildr   r   r#   r%   )r+   stater   r   r   __setstate__n   s    zSemLock.__setstate__c               C   s$   d t  j   j d t t j  f S)Nz%s-%s	semprefix)r   current_process_confignextr   _randr   r   r   r   r!   s   s    zSemLock._make_nameN)__name__
__module____qualname__tempfile_RandomNameSequencerE   r2   staticmethodr*   r%   r6   r7   r=   r@   r!   r   r   r   r   r   /   s   "	r   c               @   s7   e  Z d  Z d d d  Z d d   Z d d   Z d S)	r   r	   c            C   s    t  j |  t | t d | d  S)Nr/   )r   r2   	SEMAPHORESEM_VALUE_MAX)r+   r-   r/   r   r   r   r2   ~   s    zSemaphore.__init__c             C   s   |  j  j   S)N)r   
_get_value)r+   r   r   r   	get_value   s    zSemaphore.get_valuec             C   sB   y |  j  j   } Wn t k
 r- d } Yn Xd |  j j | f S)Nunknownz<%s(value=%s)>)r   rN   	Exception	__class__rF   )r+   r-   r   r   r   __repr__   s
    zSemaphore.__repr__N)rF   rG   rH   r2   rO   rS   r   r   r   r   r   |   s   c               @   s+   e  Z d  Z d d d  Z d d   Z d S)r   r	   c            C   s    t  j |  t | | d | d  S)Nr/   )r   r2   rL   )r+   r-   r/   r   r   r   r2      s    zBoundedSemaphore.__init__c             C   sK   y |  j  j   } Wn t k
 r- d } Yn Xd |  j j | |  j  j f S)NrP   z<%s(value=%s, maxvalue=%s)>)r   rN   rQ   rR   rF   r.   )r+   r-   r   r   r   rS      s    zBoundedSemaphore.__repr__N)rF   rG   rH   r2   rS   r   r   r   r   r      s   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c            C   s    t  j |  t d d d | d  S)Nr	   r/   )r   r2   rL   )r+   r/   r   r   r   r2      s    zLock.__init__c             C   s   y |  j  j   rP t j   j } t j   j d k r | d t j   j 7} nB |  j  j   d k rn d } n$ |  j  j   d k r d } n d } Wn t	 k
 r d } Yn Xd	 |  j
 j | f S)
N
MainThread|r	   Noner   SomeOtherThreadSomeOtherProcessrP   z<%s(owner=%s)>)r   _is_miner   rB   r'   	threadingcurrent_threadrN   _countrQ   rR   rF   )r+   r'   r   r   r   rS      s    		
zLock.__repr__N)rF   rG   rH   r2   rS   r   r   r   r   r      s   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c            C   s    t  j |  t d d d | d  S)Nr	   r/   )r   r2   RECURSIVE_MUTEX)r+   r/   r   r   r   r2      s    zRLock.__init__c             C   s   y |  j  j   r_ t j   j } t j   j d k rM | d t j   j 7} |  j  j   } nT |  j  j   d k r d \ } } n0 |  j  j   d k r d \ } } n d \ } } Wn t	 k
 r d \ } } Yn Xd
 |  j
 j | | f S)NrT   rU   r	   rV   r   rW   nonzerorX   rP   z<%s(%s, %s)>)rV   r   )rW   r^   )rX   r^   )rP   rP   )r   rY   r   rB   r'   rZ   r[   r\   rN   rQ   rR   rF   )r+   r'   countr   r   r   rS      s    zRLock.__repr__N)rF   rG   rH   r2   rS   r   r   r   r   r      s   c               @   s   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d d  Z
 d d   Z d d   Z d d d  Z d S)r   Nc            C   sY   | p | j    |  _ | j d  |  _ | j d  |  _ | j d  |  _ |  j   d  S)Nr   )r   _lockr   _sleeping_count_woken_count_wait_semaphorer%   )r+   lockr/   r   r   r   r2      s
    zCondition.__init__c             C   s)   t  j |   |  j |  j |  j |  j f S)N)r
   r9   r`   ra   rb   rc   )r+   r   r   r   r=      s    zCondition.__getstate__c             C   s,   | \ |  _  |  _ |  _ |  _ |  j   d  S)N)r`   ra   rb   rc   r%   )r+   r?   r   r   r   r@      s    zCondition.__setstate__c             C   s   |  j  j   S)N)r`   r6   )r+   r   r   r   r6      s    zCondition.__enter__c             G   s   |  j  j |   S)N)r`   r7   )r+   r8   r   r   r   r7      s    zCondition.__exit__c             C   s"   |  j  j |  _ |  j  j |  _ d  S)N)r`   r4   r5   )r+   r   r   r   r%      s    zCondition._make_methodsc             C   s[   y& |  j  j j   |  j j j   } Wn t k
 r@ d } Yn Xd |  j j |  j | f S)NrP   z<%s(%s, %s)>)ra   r   rN   rb   rQ   rR   rF   r`   )r+   Znum_waitersr   r   r   rS      s    zCondition.__repr__c             C   s   |  j  j   |  j j j   } x! t |  D] } |  j j   q, Wz |  j j d |  SWd  |  j j   x! t |  D] } |  j j   qw WXd  S)NT)	ra   r5   r`   r   r\   r   rc   r4   rb   )r+   timeoutr_   r0   r   r   r   wait   s    zCondition.waitc             C   sk   x( |  j  j d  r* |  j j d  } q W|  j j d  rg |  j j   |  j  j   |  j j d  d  S)NF)rb   r4   ra   rc   r5   )r+   resr   r   r   notify  s    zCondition.notifyc             C   s   x( |  j  j d  r* |  j j d  } q Wd } x- |  j j d  r` |  j j   | d 7} q4 W| r x! t |  D] } |  j  j   qt Wx |  j j d  r q Wd  S)NFr   r	   )rb   r4   ra   rc   r5   r   )r+   rg   Zsleepersr0   r   r   r   
notify_all   s    zCondition.notify_allc             C   s   |   } | r | S| d  k	 r/ t    | } n d  } d  } xF | s | d  k	 rj | t    } | d k rj P|  j |  |   } q> W| S)Nr   )_timerf   )r+   	predicatere   resultendtimewaittimer   r   r   wait_for7  s    		zCondition.wait_for)rF   rG   rH   r2   r=   r@   r6   r7   r%   rS   rf   rh   ri   ro   r   r   r   r   r      s   c               @   sO   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
 d  Z d	 S)r   c            C   s.   | j  | j    |  _ | j d  |  _ d  S)Nr   )r   r   _condr   _flag)r+   r/   r   r   r   r2   O  s    zEvent.__init__c          	   C   s<   |  j  , |  j j d  r- |  j j   d Sd SWd  QRXd  S)NFT)rp   rq   r4   r5   )r+   r   r   r   is_setS  s
    
zEvent.is_setc          	   C   s?   |  j  / |  j j d  |  j j   |  j  j   Wd  QRXd  S)NF)rp   rq   r4   r5   ri   )r+   r   r   r   setZ  s    
z	Event.setc          	   C   s%   |  j   |  j j d  Wd  QRXd  S)NF)rp   rq   r4   )r+   r   r   r   clear`  s    
zEvent.clearNc          	   C   sn   |  j  ^ |  j j d  r, |  j j   n |  j  j |  |  j j d  r_ |  j j   d Sd SWd  QRXd  S)NFT)rp   rq   r4   r5   rf   )r+   re   r   r   r   rf   d  s    
z
Event.wait)rF   rG   rH   r2   rr   rs   rt   rf   r   r   r   r   r   M  s
   c               @   s   e  Z d  Z d d d d  Z d d   Z d d   Z e d d	    Z e j d
 d	    Z e d d    Z	 e	 j d d    Z	 d S)BarrierNc      	      C   ss   d d  l  } d d l m } | | j d  d  } | j   } |  j | | | | | f  d |  _ d |  _ d  S)Nr   r	   )BufferWrapperr0   r   )structheaprv   calcsizer   r@   _stater\   )	r+   partiesactionre   r/   rw   rv   wrapperZcondr   r   r   r2   v  s    	zBarrier.__init__c             C   sC   | \ |  _  |  _ |  _ |  _ |  _ |  j j   j d  |  _ d  S)Nr0   )_parties_action_timeoutrp   _wrapperZcreate_memoryviewcast_array)r+   r?   r   r   r   r@     s    $zBarrier.__setstate__c             C   s"   |  j  |  j |  j |  j |  j f S)N)r~   r   r   rp   r   )r+   r   r   r   r=     s    zBarrier.__getstate__c             C   s   |  j  d S)Nr   )r   )r+   r   r   r   rz     s    zBarrier._statec             C   s   | |  j  d <d  S)Nr   )r   )r+   r-   r   r   r   rz     s    c             C   s   |  j  d S)Nr	   )r   )r+   r   r   r   r\     s    zBarrier._countc             C   s   | |  j  d <d  S)Nr	   )r   )r+   r-   r   r   r   r\     s    )
rF   rG   rH   r2   r@   r=   propertyrz   setterr\   r   r   r   r   ru   t  s   	ru   )__all__rZ   r   rI   r    r   rj    r
   r   r   r   r   ImportErrorlistr   r]   rL   rM   objectr   r   r   r   r   r   ru   r   r   r   r   <module>   s0   Mz'