Il modulo mutex definisce una classe che consente di implementare la mutua esclusione acquisendo e rilasciando i locks. Non richiede (o implica) threading o multi-tasking, anche se potrebbe essere utile per questi scopi.
Il modulo mutex definisce le seguenti classi:
) |
Lo stato di un mutex è composto di due elementi -- un bit ``locked''
ed una coda. Quando il mutex non è bloccato, la coda è vuota.
Altrimenti, la coda contiene zero o più coppie
(funzione, argomento)
che rappresentano funzioni (o
metodi) in attesa di acquisire il lock. Quando il mutex è non
bloccato mentre la coda è non vuota, la prima voce nella coda viene
rimossa e la corrispondente funzione (argomento) della coppia viene
chiamata, implicando l'acquisizione del lock.
Naturalmente, non è implicato il multi-threading - da cui la simpatica interfaccia per il lock(), in cui una funzione viene chiamata dopo che il blocco è stato acquisito.