File: //proc/thread-self/root/lib64/python3.6/site-packages/zmq/utils/__pycache__/garbage.cpython-36.pyc
3
VS�_/ � @ s� d Z ddlZddlZddlmZ ddlmZ ddlmZm Z m
Z
ddlZddlZedddg�Z
G d d
� d
e�ZG dd� de�Ze� ZdS )
zcGarbage collection thread for representing zmq refcount of Python objects
used in zero-copy sends.
� N)�getpid)�
namedtuple)�Thread�Event�Lock�gcref�obj�eventc s( e Zd ZdZ� fdd�Zdd� Z� ZS )�GarbageCollectorThreadz4Thread in which garbage collection actually happens.c s. t t| �j� || _d| _t� | _t� | _d S )NT) �superr
�__init__�gcZdaemonr �pidr �ready)�selfr
)� __class__� �/usr/lib64/python3.6/garbage.pyr s
zGarbageCollectorThread.__init__c C s� t d kst � | jkr"| jj� d S z(| jjjtj�}d|_ |j
| jj� W d | jj� X xxt d ksnt � | jkrrd S |j� }|dkr�P t
|�dkr�dnd}tj||�d }| jjj|d �}|r�|jr�|jj� ~qZW |j� d S )Nr s DIE� �L�Q)r r r �setr
�context�socket�zmqZPULLZlingerZbind�urlZrecv�len�struct�unpack�refs�popr �close)r �s�msgZfmt�key�tupr r r �run s*
zGarbageCollectorThread.run)�__name__�
__module__�__qualname__�__doc__r r&