MINI MINI MANI MO
3
  \/                 @   s,  d dddddgZ ddlZddlZddlZddlZddlZdd	lmZ dd
lmZ ddlm	Z	 yddlm
Z
mZ W n ek
r   edY nX e
ed\ZZej
jZG dd deZ
G dd de
ZG dd deZG dd  d e
ZG dd de
ZG dd deZG dd deZG dd dejZdS )LockRLock	SemaphoreBoundedSemaphore	ConditionEvent    N   )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 Zd Zej Zdd Zedd Zdd Z	dd Z
d	d
 Zdd Zd
d Z
edd ZdS )r   c         
   C   s   |d krt jj }|j }tjdkp*|dk}xPtdD ]<}y tj|||| j	 | }| _
W n tk
rn   Y q6X P q6W tdtj
d|j  | j  tjdkrdd }	tj| |	 | j
jd k	rdd	lm}
 |
| j
j tj| tj| j
jfd
d d S )Nwin32forkd   zcannot find name for semaphorezcreated semlock with handle %sc             S   s   | j j  d S )N)_semlock_after_fork)obj r   3/usr/lib64/python3.6/multiprocessing/synchronize.pyr   G   s    z%SemLock.__init__.<locals>._after_forkr   )registerr   )Zexitpriority)r	   Z_default_contextZget_contextZget_start_methodsysplatformrange_multiprocessingr   
_make_namer   FileExistsErrorr   debughandle
_make_methodsZregister_after_forknamesemaphore_trackerr   ZFinalize_cleanup)selfkindvaluemaxvaluectxr!   Z
unlink_nowislr   r   r   r   r   __init__2   s.    
zSemLock.__init__c             C   s    ddl m} t|  ||  d S )Nr   )
unregister)r"