mutex — mutex-module¶
De mutex-module biedt een primitief voor wederzijdse uitsluiting om kritieke codesecties of gedeelde gegevens te beschermen tegen gelijktijdige toegang door een interrupt-serviceroutine en de hoofdthread.
Het verkrijgen en vrijgeven van de lock gebeurt via een context manager (with-statement), die blokkeert totdat de mutex beschikbaar is. Er is ook een niet-blokkerende Mutex.test()-methode beschikbaar.
Voorbeeld:
from mutex import Mutex
mtx = Mutex()
# Acquire for a critical section (blocks if already held).
with mtx:
# ... protected code, e.g. shared buffer access ...
pass
# Or try without blocking.
if mtx.test():
try:
# ... protected code ...
pass
finally:
mtx.release()
class Mutex – mutex-object¶
- class mutex.Mutex¶
Maakt een niet-vergrendeld mutex-object aan.
- release() None¶
Ontgrendelt de mutex. Werpt
mutex.MutexExceptionop als de mutex momenteel niet vergrendeld is.
- test() bool¶
Probeert de mutex op een niet-blokkerende manier te verkrijgen. Geeft
Trueterug bij succes enFalseals de mutex al vergrendeld is.Gebruik de instantie als context manager (
with-statement) om de mutex op een blokkerende manier te verkrijgen. De mutex wordt automatisch vrijgegeven bij het verlaten.
Uitzonderingen¶
- exception mutex.MutexException¶
Subklasse van
OSError. Wordt doorMutex.releaseopgeworpen wanneer de mutex al ontgrendeld is.