Mercurial > cpython-lru_cache-weakref
annotate Doc/lib/libmutex.tex @ 21467:4e35fa5d5708 legacy-trunk
Add documentation for the help() built-in; contributed by Ka-Ping Yee.
This is part of SF patch #494622.
| author | Fred Drake <fdrake@acm.org> |
|---|---|
| date | Tue, 18 Dec 2001 16:31:08 +0000 |
| parents | 5d6fb7ff68c7 |
| children | 73d145bfd8e4 |
| rev | line source |
|---|---|
| 11067 | 1 \section{\module{mutex} --- |
| 2 Mutual exclusion support} | |
| 3 | |
| 4 \declaremodule{standard}{mutex} | |
|
15467
d7864345b1c8
Update Moshe Zadka's email address to one works and might last a while.
Fred Drake <fdrake@acm.org>
parents:
13625
diff
changeset
|
5 \sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il} |
| 11067 | 6 \modulesynopsis{Lock and queue for mutual exclusion.} |
| 7 | |
|
15774
5d6fb7ff68c7
Added missing word; fixed minor nits.
Fred Drake <fdrake@acm.org>
parents:
15467
diff
changeset
|
8 The \module{mutex} module defines a class that allows mutual-exclusion |
|
13625
fdfd1049f36e
Rob W. W. Hooft's spelling fixes for the Library Reference. I hope
Thomas Wouters <thomas@python.org>
parents:
11070
diff
changeset
|
9 via acquiring and releasing locks. It does not require (or imply) |
|
11070
0dd50a70c47e
Moshe: Remove extraneous "and".
Fred Drake <fdrake@acm.org>
parents:
11067
diff
changeset
|
10 threading or multi-tasking, though it could be useful for |
| 11067 | 11 those purposes. |
| 12 | |
| 13 The \module{mutex} module defines the following class: | |
| 14 | |
| 15 \begin{classdesc}{mutex}{} | |
| 16 Create a new (unlocked) mutex. | |
| 17 | |
| 18 A mutex has two pieces of state --- a ``locked'' bit and a queue. | |
| 19 When the mutex is not locked, the queue is empty. | |
|
15774
5d6fb7ff68c7
Added missing word; fixed minor nits.
Fred Drake <fdrake@acm.org>
parents:
15467
diff
changeset
|
20 Otherwise, the queue contains zero or more |
| 11067 | 21 \code{(\var{function}, \var{argument})} pairs |
| 22 representing functions (or methods) waiting to acquire the lock. | |
| 23 When the mutex is unlocked while the queue is not empty, | |
| 24 the first queue entry is removed and its | |
| 25 \code{\var{function}(\var{argument})} pair called, | |
| 26 implying it now has the lock. | |
| 27 | |
| 28 Of course, no multi-threading is implied -- hence the funny interface | |
|
15774
5d6fb7ff68c7
Added missing word; fixed minor nits.
Fred Drake <fdrake@acm.org>
parents:
15467
diff
changeset
|
29 for \method{lock()}, where a function is called once the lock is |
|
5d6fb7ff68c7
Added missing word; fixed minor nits.
Fred Drake <fdrake@acm.org>
parents:
15467
diff
changeset
|
30 acquired. |
| 11067 | 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}{} | |
| 39 Check 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, | |
| 44 and return true, otherwise, return false. | |
| 45 \end{methoddesc} | |
| 46 | |
| 47 \begin{methoddesc}{lock}{function, argument} | |
| 48 Execute \code{\var{function}(\var{argument})}, unless the mutex is locked. | |
| 49 In the case it is locked, place the function and argument on the queue. | |
| 50 See \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}{} | |
| 55 Unlock the mutex if queue is empty, otherwise execute the first element | |
| 56 in the queue. | |
| 57 \end{methoddesc} |
