File: //lib64/python3.6/multiprocessing/__pycache__/synchronize.cpython-36.opt-2.pyc
3
  \/  �               @   s,  d dddddgZ ddlZddlZddlZddlZddlZdd	lmZ dd
lmZ ddlm	Z	 yddlm
Z
mZ W n ek
r�   ed��Y nX e
ed��\ZZej
jZG dd� de�Z
G dd� de
�ZG dd� de�ZG dd � d e
�ZG dd� de
�ZG dd� de�ZG dd� de�ZG dd� dej�ZdS )�Lock�RLock�	Semaphore�BoundedSemaphore�	Condition�Event�    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}xPtd�D ]<}y tj|||| j	� |� }| _
W n tk
rn   Y q6X P q6W td��tj
d|j � | j�  tjdkr�dd� }	tj| |	� | j
jd k	r�dd	lm}
 |
| j
j� tj| tj| j
jfd
d� d S )N�win32�fork�d   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_method�sys�platform�range�_multiprocessingr   �
_make_namer   �FileExistsErrorr   �debug�handle�
_make_methodsZregister_after_fork�name�semaphore_trackerr   ZFinalize�_cleanup)�self�kind�value�maxvalue�ctxr!   Z
unlink_now�i�slr   r   r   r   r   �__init__2   s.    
zSemLock.__init__c             C   s    ddl m} t| � || � d S )Nr   )�
unregister)r"