Your IP : 216.73.216.60
��Yf�m � @ sa d Z d d l Z d d l Z d d l m Z m Z d d l Z d d l Z d d l m Z d d � Z
Gd d � d e � Z Gd d
� d
e j
� Z Gd d � d e � Z Gd
d � d e � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z Gd d � d e � Z d S)z/
Various tests for synchronization primitives.
� N)�start_new_thread�TIMEOUT_MAX)�supportc C s t j d � d S)Ng{�G�z�?)�time�sleep� r r �4/opt/alt/python35/lib64/python3.5/test/lock_tests.py�_wait s r c @ sI e Z d Z d Z d d d � Z d d � Z d d � Z d d
� Z d S)�Bunchz
A bunch of threads.
Fc
s� � � _ | � _ g � _ g � _ | � _ � � f d d � } y( x! t | � D] } t | f � qS WWn d � _ � Yn Xd S)z�
Construct a bunch of `n` threads running the same function `f`.
If `wait_before_exit` is True, the threads won't terminate until
do_finish() is called.
c sV t j � } � j j | � z � � Wd � j j | � x � j sP t � q= WXd S)N)� threading� get_ident�started�append�finished� _can_exitr )�tid)�f�selfr r �task! s zBunch.__init__.<locals>.taskTN)r �nr
r r �ranger )r r r Zwait_before_exitr �ir )r r r �__init__ s
zBunch.__init__c C s* x# t | j � | j k r% t � q Wd S)N)�lenr
r r )r r r r �wait_for_started1 s zBunch.wait_for_startedc C s* x# t | j � | j k r% t � q Wd S)N)r r r r )r r r r �wait_for_finished5 s zBunch.wait_for_finishedc C s
d | _ d S)NT)r )r r r r � do_finish9 s zBunch.do_finishN)�__name__�
__module__�__qualname__�__doc__r r r r r r r r r
s
r
c @ s4 e Z d Z d d � Z d d � Z d d � Z d S)�BaseTestCasec C s t j � | _ d S)N)r Zthreading_setup�_threads)r r r r �setUp>