$24 GRAYBYTE WORDPRESS FILE MANAGER $43

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.162.162 | ADMIN IP 216.73.216.174
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/usr/lib64/python2.7/Demo/metaclasses/

HOME
Current File : /usr/lib64/python2.7/Demo/metaclasses//Synch.pyc
�
��^c@s�dZddlZddd��YZd�ZddlmZmZmZdefd��YZd	efd
��YZ	defd��YZ
e
d
di�Zd�Ze
dkr�e�e�ndS(s`Synchronization metaclass.

This metaclass  makes it possible to declare synchronized methods.

i����NtLockcBs,eZdZd�Zdd�Zd�ZRS(s�Reentrant lock.

    This is a mutex-like object which can be acquired by the same
    thread more than once.  It keeps a reference count of the number
    of times it has been acquired by the same thread.  Each acquire()
    call must be matched by a release() call and only the last
    release() call actually releases the lock for acquisition by
    another thread.

    The implementation uses two locks internally:

    __mutex is a short term lock used to protect the instance variables
    __wait is the lock for which other threads wait

    A thread intending to acquire both locks should acquire __wait
    first.

   The implementation uses two other instance variables, protected by
   locking __mutex:

    __tid is the thread ID of the thread that currently has the lock
    __count is the number of times the current thread has acquired it

    When the lock is released, __tid is None and __count is zero.

    cCs4tj�|_tj�|_d|_d|_dS(s0Constructor.  Initialize all instance variables.iN(tthreadt
allocate_lockt_Lock__mutext_Lock__waittNonet
_Lock__tidt_Lock__count(tself((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyt__init__*s	icCs�|jj�z-|jtj�kr9|jd|_dSWd|jj�X|jj|�}|ro|rodSzW|jj�|jdks�t	�|jdks�t	�tj�|_d|_dSWd|jj�XdS(s}Acquire the lock.

        If the optional flag argument is false, returns immediately
        when it cannot acquire the __wait lock without blocking (it
        may still block for a little while in order to acquire the
        __mutex lock).

        The return value is only relevant when the flag argument is
        false; it is 1 if the lock is acquired, 0 if not.

        iNi(
RtacquireRRt	get_identRtreleaseRRtAssertionError(Rtflagtlocked((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR
1s"

	cCs�|jj�zl|jtj�ks+t�|jdks@t�|jd|_|jdkrxd|_|jj	�nWd|jj	�XdS(s�Release the lock.

        If this thread doesn't currently have the lock, an assertion
        error is raised.

        Only allow another thread to acquire the lock when the count
        reaches zero after decrementing it.

        iiN(
RR
RRRR
RRRR(R((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyRQs

	(t__name__t
__module__t__doc__R	R
R(((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR
s	 cCs�g}|d�}||d�}t�}|j�||�|j�|j�tj||f�tj|||f�tj||f�tj||f�|j�ddl}x.t|�dkr�t|�GH|jd�q�Wt|�GHdS(NcSs3|j�dtj�G|j�|jd�dS(Nsf2 running in thread %d
i(R
RRRtappend(tlocktdone((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pytf2ks

cSsE|j�dtj�Gz||�Wd|j�X|jd�dS(Nsf1 running in thread %d
i(R
RRRR(RRR((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pytf1qs
i����i	g����MbP?(RR
RRtstart_new_threadttimetlentsleep(RRRRR((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyt	_testLockgs$		




(t	MetaClasst
MetaHelpertMetaMethodWrappertLockingMethodWrappercBseZd�ZRS(cOs�|jd dkrC|jddkrCt|j|jf||�S|jjj�z!t|j|jf||�SWd|jjj�XdS(Nit_(Rtapplytfunctinstt__lock__R
R(Rtargstkw((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyt__call__�s&!(RRR((((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR �st
LockingHelpercBseZeZd�ZRS(cCs tj||�t�|_dS(N(Rt__helperinit__RR%(Rtformalclass((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR*�s(RRR t__methodwrapper__R*(((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR)�stLockingMetaClasscBseZeZRS((RRR)t
__helper__(((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR-�stLockingcCs�dtfd��Y}dd�}dd�}tj�}|j�tj�}|j�|d�}d}tj||||f�tj||||f�|j�dGH|j�dGHd	Gt|j�GHdS(
NtBuffercBs#eZd�Zd�Zd�ZRS(cSsB|dkst�||_dg|j|_d|_|_dS(Ni(R
tsizeRtbuffertfirsttlast(Rtinitialsize((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR	�s	cSsI|jd|j|jkrH||j|j<|jd|j|_dSdG|jGHd|j|j|jfGH|j|jkr�|j|j|j!}n|j|j|j|j }dG|GH|dg|jd|_d|_|jd|_|jd|_dG|jGHdG|jGHd|j|j|jfGH|j|�dS(	Nisbuffer =s first = %d, last = %d, size = %dstemp =iisBuffer size doubled tosnew buffer =(R4R1R3R2Rtput(Rtitemttemp((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR6�s(		cSsF|j|jkrt�n|j|j}|jd|j|_|S(Ni(R3R4tEOFErrorR2R1(RR7((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pytget�s
	(RRR	R6R:(((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyR0�s		i�cSs`ddl}d}x0||krDdG|GH|j|�|d}qWdG|GdGH|j�dS(Ni����iR6isProducer: done producingtitems(RR6R(R2twaittnRti((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pytproducer�s	

cSs�ddl}d}d}x�||kr�yK|j�}||krXtd||f�ndG|GH|d}d}Wqtk
r�|j|�|d}qXqWdG|Gd	GH|j�dS(
Ni����ig����MbP?sget() returned %s, expected %stgotiisConsumer: done consumingR;(RR:R
R9RR(R2R<R=RR>ttouttx((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pytconsumer�s"	




is
Producer donesAll donesbuffer size ==(R/RRR
RRR2(R0R?RCtpwaittcwaitR2R=((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyt_test�s (




t__main__(((RRRRtMetaRRRR R)R-R/RFR(((s./usr/lib64/python2.7/Demo/metaclasses/Synch.pyt<module>sZ	+
	U


Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
9 Jun 2024 8.36 AM
root / root
0755
Eiffel.py
3.387 KB
19 Apr 2020 9.13 PM
root / root
0644
Eiffel.pyc
4.523 KB
10 Apr 2024 4.58 AM
root / root
0644
Eiffel.pyo
4.424 KB
10 Apr 2024 4.58 AM
root / root
0644
Enum.py
4.315 KB
19 Apr 2020 9.13 PM
root / root
0644
Enum.pyc
6.034 KB
10 Apr 2024 4.58 AM
root / root
0644
Enum.pyo
6.034 KB
10 Apr 2024 4.58 AM
root / root
0644
Meta.py
2.864 KB
19 Apr 2020 9.13 PM
root / root
0644
Meta.pyc
4.472 KB
10 Apr 2024 4.58 AM
root / root
0644
Meta.pyo
4.472 KB
10 Apr 2024 4.58 AM
root / root
0644
Simple.py
1.164 KB
19 Apr 2020 9.13 PM
root / root
0644
Simple.pyc
2.682 KB
10 Apr 2024 4.58 AM
root / root
0644
Simple.pyo
2.682 KB
10 Apr 2024 4.58 AM
root / root
0644
Synch.py
7.752 KB
19 Apr 2020 9.13 PM
root / root
0644
Synch.pyc
8.264 KB
10 Apr 2024 4.58 AM
root / root
0644
Synch.pyo
8.119 KB
10 Apr 2024 4.58 AM
root / root
0644
Trace.py
4.036 KB
19 Apr 2020 9.13 PM
root / root
0644
Trace.pyc
6.028 KB
10 Apr 2024 4.58 AM
root / root
0644
Trace.pyo
6.028 KB
10 Apr 2024 4.58 AM
root / root
0644
index.html
20.091 KB
19 Apr 2020 9.13 PM
root / root
0644
meta-vladimir.txt
11.257 KB
19 Apr 2020 9.13 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF