File: //lib64/python3.9/multiprocessing/__pycache__/synchronize.cpython-39.pyc
a
    �DOgZ-  �                   @   s"  g d �Z ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 zddlm
Z
mZ W n ey�   ed��Y n0 e
ed	��\ZZej
jZG d
d� de�Z
G dd
� d
e
�ZG dd� de�ZG dd� de
�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_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.�   c                   @   s\   e Zd Ze�� Zdd� Zedd� �Zdd� Z	dd� Z
d	d
� Zdd� Zd
d� Z
edd� �ZdS )r   c             	   C   s�   |d u rt j�� }|�� }tjdkp*|dk}td�D ]<}z t�|||| �	� |� }| _
W n tyj   Y q40  qzq4td��t�
d|j � | ��  tjdkr�dd� }	t�| |	� | j
jd ur�dd	lm}
 |
| j
jd
� tj| tj| j
jfdd� d S )
N�win32�fork�d   zcannot find name for semaphorezcreated semlock with handle %sc                 S   s   | j ��  d S �N)�_semlock�_after_fork)�obj� r   �3/usr/lib64/python3.9/multiprocessing/synchronize.pyr   G   s    z%SemLock.__init__.<locals>._after_forkr   )�register�	semaphorer   )�exitpriority)r	   �_default_context�get_context�get_start_method�sys�platform�range�_multiprocessingr   �
_make_namer   �FileExistsErrorr   �debug�handle�
_make_methods�register_after_fork�name�resource_trackerr   �Finalize�_cleanup)�self�kind�value�maxvalue�ctxr(   �
unlink_now�i�slr   r   r   r   r   �__init__2   s2    
�
�zSemLock.__init__c                 C   s"