�
*�Kg�- � �� � g d �Z ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlm Z ddlm
Z
mZ n# e$ r ed� � �w xY w e
ed � � � � \ ZZej
j Z G d
� de� � Z
G d� d
e
� � Z G d� de� � Z G d� de
� � Z G d� de
� � Z G d� de� � Z G d� de� � Z G d� 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 �| � e Zd Z ej � � Zd� Zed� � � Zd� Z d� Z
d� Zd� Zd� Z
ed� � � Zd S )
r
c � � |�t j � � � }|� � � }t j dk p|dk }t
d� � D ]E} t j |||| � � � |� � x}| _
n# t $ r Y �Bw xY wt d� � �t j
d|j z � � | � � � t j dk rd� } t j | | � � | j
j �Kddlm}
|
| j
j d � � t j | t j | j
j fd
�� � d S d S )N�win32�fork�d zcannot find name for semaphorezcreated semlock with handle %sc �8 � | j � � � d S �N)�_semlock�_after_fork)�objs �2/usr/lib/python3.11/multiprocessing/synchronize.pyr z%SemLock.__init__.<locals>._after_forkG s � ���(�(�*�*�*�*�*� r )�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 s r �__init__zSemLock.__init__2 s� � ��;��*�6�6�8�8�C��#�#�%�%���\�W�,�>����
��s���
D�
D�A�
�%5�%=��%��4�?�?�+<�+<��& � & � ��T�]� ��� #�
�
�
���
����
"�"B�C�C�C��
�3�b�i�?�@�@�@��������<�7�"�"�
+�
+�
+��$�T�;�7�7�7��=��)�
3�2�2�2�2�2��H�T�]�'��5�5�5��M�$�� 0�4�=�3E�2G�'(�
*�
*�
*�
*�
*�
*�
*�)s �1B�
B�Bc �H � ddl m} t | � � || d� � d S )Nr )�
unregisterr )r- r: r )r, r: s r r/ zSemLock._cleanupT s: � �0�0�0�0�0�0��4�����
�4��%�%�%�%�%r c �J � | j j | _ | j j | _ d S r )r �acquire�release�r0 s r r* zSemLock._make_methodsZ s � ��}�,����}�,����r c �4 � | j � � � S r )r � __enter__r> |