source: vendor/python/2.5/Doc/lib/libmutex.tex

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 1.9 KB
Line 
1\section{\module{mutex} ---
2 Mutual exclusion support}
3
4\declaremodule{standard}{mutex}
5\sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}
6\modulesynopsis{Lock and queue for mutual exclusion.}
7
8The \module{mutex} module defines a class that allows mutual-exclusion
9via acquiring and releasing locks. It does not require (or imply)
10threading or multi-tasking, though it could be useful for
11those purposes.
12
13The \module{mutex} module defines the following class:
14
15\begin{classdesc}{mutex}{}
16Create a new (unlocked) mutex.
17
18A mutex has two pieces of state --- a ``locked'' bit and a queue.
19When the mutex is not locked, the queue is empty.
20Otherwise, the queue contains zero or more
21\code{(\var{function}, \var{argument})} pairs
22representing functions (or methods) waiting to acquire the lock.
23When the mutex is unlocked while the queue is not empty,
24the first queue entry is removed and its
25\code{\var{function}(\var{argument})} pair called,
26implying it now has the lock.
27
28Of course, no multi-threading is implied -- hence the funny interface
29for \method{lock()}, where a function is called once the lock is
30acquired.
31\end{classdesc}
32
33
34\subsection{Mutex Objects \label{mutex-objects}}
35
36\class{mutex} objects have following methods:
37
38\begin{methoddesc}{test}{}
39Check whether the mutex is locked.
40\end{methoddesc}
41
42\begin{methoddesc}{testandset}{}
43``Atomic'' test-and-set, grab the lock if it is not set,
44and return \code{True}, otherwise, return \code{False}.
45\end{methoddesc}
46
47\begin{methoddesc}{lock}{function, argument}
48Execute \code{\var{function}(\var{argument})}, unless the mutex is locked.
49In the case it is locked, place the function and argument on the queue.
50See \method{unlock} for explanation of when
51\code{\var{function}(\var{argument})} is executed in that case.
52\end{methoddesc}
53
54\begin{methoddesc}{unlock}{}
55Unlock the mutex if queue is empty, otherwise execute the first element
56in the queue.
57\end{methoddesc}
Note: See TracBrowser for help on using the repository browser.