<!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>

e f                 @   s   d  d l  Z  d  d l 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 d g Z	 Gd d	   d	 e
  Z e   Z e j Z e j Z e j Z e j Z d
 d   Z d S)    N   )spawn)utilensure_runningregister
unregisterc               @   sX   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d S)SemaphoreTrackerc             C   s   t  j   |  _ d  |  _ d  S)N)	threadingZLock_lock_fd)self r   F/opt/alt/python34/lib64/python3.4/multiprocessing/semaphore_tracker.py__init__   s    zSemaphoreTracker.__init__c             C   s   |  j    |  j S)N)r   r   )r   r   r   r   getfd!   s    
zSemaphoreTracker.getfdc             C   s  |  j   |  j d k	 r d Sg  } y | j t j j    Wn t k
 rQ Yn Xd } t j   \ } } z yW | j |  t	 j
   } | g t j   } | d | | g 7} t j | | |  Wn t j |    Yn
 X| |  _ Wd t j |  XWd QXd S)zMake sure that semaphore tracker process is running.

        This can be run from any process.  Usually a child process will use
        the semaphore created by its parent.Nz;from multiprocessing.semaphore_tracker import main;main(%d)z-c)r
   r   appendsysstderrfileno	Exceptionospiper   Zget_executabler   Z_args_from_interpreter_flagsZspawnv_passfdsclose)r   Zfds_to_passcmdrwZexeargsr   r   r   r   %   s*    
zSemaphoreTracker.ensure_runningc             C   s   |  j  d |  d S)z2Register name of semaphore with semaphore tracker.ZREGISTERN)_send)r   namer   r   r   r   C   s    zSemaphoreTracker.registerc             C   s   |  j  d |  d S)z4Unregister name of semaphore with semaphore tracker.Z
UNREGISTERN)r   )r   r   r   r   r   r   G   s    zSemaphoreTracker.unregisterc             C   s_   |  j    d j | |  j d  } t |  d k rF t d   n  t j |  j |  } d  S)Nz{0}:{1}
asciii   zname too long)r   formatencodelen
ValueErrorr   writer   )r   r   r   msgnbytesr   r   r   r   K   s    
zSemaphoreTracker._sendN)	__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r      s   r   c          ,   C   s  t  j  t  j t  j  t  j  t  j t  j  x= t j t j f D]) } y | j   Wq? t k
 rg Yq? Xq? Wt	   } z t
 |  d   } x | D] } yg | j   j d  \ } } | d k r | j |  n, | d k r | j |  n t d |   Wq t k
 r4y t j t j     Wn Yn XYq Xq WWd QXWd | r|y t j d t |   Wq|t k
 rxYq|Xn  xu | D]m } zc | j d  } y t j |  Wn< t k
 r} z t j d	 | | f  WYd d } ~ Xn XWd XqWXd S)
zRun semaphore tracker.rb   :s   REGISTERs
   UNREGISTERzunrecognized command %rNzRsemaphore_tracker: There appear to be %d leaked semaphores to clean up at shutdownr   zsemaphore_tracker: %r: %s)signalSIGINTSIG_IGNSIGTERMr   stdinstdoutr   r   setopenstripsplitaddremoveRuntimeError
excepthookexc_infowarningswarnr"   decode_multiprocessingZ
sem_unlink)fdfcacheliner   r   er   r   r   main]   sJ    			.rD   )r   r,   r   r	   r;   r>    r   r   __all__objectr   Z_semaphore_trackerr   r   r   r   rD   r   r   r   r   <module>   s   ;					