Mercurial > cpython-lru_cache-weakref
view 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 |
line wrap: on
line source
\section{\module{mutex} --- Mutual exclusion support} \declaremodule{standard}{mutex} \sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il} \modulesynopsis{Lock and queue for mutual exclusion.} The \module{mutex} module defines a class that allows mutual-exclusion via acquiring and releasing locks. It does not require (or imply) threading or multi-tasking, though it could be useful for those purposes. The \module{mutex} module defines the following class: \begin{classdesc}{mutex}{} Create a new (unlocked) mutex. A mutex has two pieces of state --- a ``locked'' bit and a queue. When the mutex is not locked, the queue is empty. Otherwise, the queue contains zero or more \code{(\var{function}, \var{argument})} pairs representing functions (or methods) waiting to acquire the lock. When the mutex is unlocked while the queue is not empty, the first queue entry is removed and its \code{\var{function}(\var{argument})} pair called, implying it now has the lock. Of course, no multi-threading is implied -- hence the funny interface for \method{lock()}, where a function is called once the lock is acquired. \end{classdesc} \subsection{Mutex Objects \label{mutex-objects}} \class{mutex} objects have following methods: \begin{methoddesc}{test}{} Check whether the mutex is locked. \end{methoddesc} \begin{methoddesc}{testandset}{} ``Atomic'' test-and-set, grab the lock if it is not set, and return true, otherwise, return false. \end{methoddesc} \begin{methoddesc}{lock}{function, argument} Execute \code{\var{function}(\var{argument})}, unless the mutex is locked. In the case it is locked, place the function and argument on the queue. See \method{unlock} for explanation of when \code{\var{function}(\var{argument})} is executed in that case. \end{methoddesc} \begin{methoddesc}{unlock}{} Unlock the mutex if queue is empty, otherwise execute the first element in the queue. \end{methoddesc}
