Piccole aggiunte sui mutex con il file locking
authorSimone Piccardi <piccardi@gnulinux.it>
Thu, 9 Jan 2003 14:21:59 +0000 (14:21 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Thu, 9 Jan 2003 14:21:59 +0000 (14:21 +0000)
ipc.tex

diff --git a/ipc.tex b/ipc.tex
index 4613f8d..c93fe7a 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -3466,33 +3466,40 @@ descriptor che sar
 mutex.  
 
 La seconda funzione (\texttt{\small 6--10}) è \func{FindMutex}, che, come la
 mutex.  
 
 La seconda funzione (\texttt{\small 6--10}) è \func{FindMutex}, che, come la
-precedente, si è definita solo per mantenere una analogia con l'analoga
-funzione basata sui semafori, anch'essa si limita (\texttt{\small 9}) ad
+precedente, è stata definita per mantenere una analogia con la corrispondente
+funzione basata sui semafori. Anch'essa si limita (\texttt{\small 9}) ad
 aprire il file da usare per il file locking, solo che in questo caso le
 opzioni di \func{open} sono tali che il file in questione deve esistere di
 già.
 
 La terza funzione (\texttt{\small 11--23}) è \func{LockMutex} e serve per
 aprire il file da usare per il file locking, solo che in questo caso le
 opzioni di \func{open} sono tali che il file in questione deve esistere di
 già.
 
 La terza funzione (\texttt{\small 11--23}) è \func{LockMutex} e serve per
-acquisire il mutex. La funzione definisce (\texttt{\small 14} e inizializza
-(\texttt{\small 17--20}) la struttura \var{lock} per poter acquisire un write
-lock sul file, che poi (\texttt{\small 21}) viene richiesto con \func{fcntl}
-(restituendo il codice di ritorno). Se il file è libero il lock è acquisito e
-la funzione ritorna immediatamente; altrimenti \func{fcntl} si bloccherà (si
-noti che la si è chiamata con \func{F\_SETLKW}) fino al rilascio del lock.
+acquisire il mutex. La funzione definisce (\texttt{\small 14}) e inizializza
+(\texttt{\small 17--20}) la struttura \var{lock} da usare per acquisire un
+write lock sul file, che poi (\texttt{\small 21}) viene richiesto con
+\func{fcntl}, restituendo il valore di ritorno di quest'ultima. Se il file è
+libero il lock viene acquisito e la funzione ritorna immediatamente;
+altrimenti \func{fcntl} si bloccherà (si noti che la si è chiamata con
+\func{F\_SETLKW}) fino al rilascio del lock.
 
 La quarta funzione (\texttt{\small 24--35}) è \func{UnlockMutex} e serve a
 rilasciare il mutex. La funzione è analoga alla precedente, solo che in questo
 caso si inizializza (\texttt{\small 29--32}) la struttura \var{lock} per il
 rilascio del lock, che viene effettuato (\texttt{\small 34}) con la opportuna
 
 La quarta funzione (\texttt{\small 24--35}) è \func{UnlockMutex} e serve a
 rilasciare il mutex. La funzione è analoga alla precedente, solo che in questo
 caso si inizializza (\texttt{\small 29--32}) la struttura \var{lock} per il
 rilascio del lock, che viene effettuato (\texttt{\small 34}) con la opportuna
-chiamata a \func{fcntl}.
+chiamata a \func{fcntl}. Avendo usato il file locking in semantica POSIX (si
+riveda quanto detto \secref{sec:file_posix_lock}) solo il processo che ha
+precedentemente eseguito il lock può sbloccare il mutex.
 
 
-La quinta funzione \texttt{\small 36--40}) è \func{RemoveMutex} e serve a
-cancellare il mutex. Anche questa funzione è definita per mantenere una
+La quinta funzione (\texttt{\small 36--40}) è \func{RemoveMutex} e serve a
+cancellare il mutex. Anche questa funzione è stata definita per mantenere una
 analogia con le funzioni basate sui semafori, e si limita a cancellare
 analogia con le funzioni basate sui semafori, e si limita a cancellare
-\texttt{\small 39}) il file con una chiamata ad \func{unlink}. Si noti che in
-questo caso la funzione non ha effetto sui mutex già ottenuti, con precedenti
+(\texttt{\small 39}) il file con una chiamata ad \func{unlink}. Si noti che in
+questo caso la funzione non ha effetto sui mutex già ottenuti con precedenti
 chiamate a \func{FindMutex} o \func{CreateMutex}, che continueranno ad essere
 chiamate a \func{FindMutex} o \func{CreateMutex}, che continueranno ad essere
-disponibili fintanto che i relativi file descriptor saranno aperti.
+disponibili fintanto che i relativi file descriptor restano aperti. Pertanto
+per rilasciare un mutex occorrerà prima chiamare \func{UnlockMutex} oppure
+chiudere il file usato per il lock.
+
+La sesta funzione (\texttt{\small 41--56}) legge lo stato del mutex.
 
 Basandosi sulla semantica dei file lock POSIX valgono tutte le precisazioni
 relative al comportamento di questi ultimi fatte in
 
 Basandosi sulla semantica dei file lock POSIX valgono tutte le precisazioni
 relative al comportamento di questi ultimi fatte in