Che cos'è un MUTEX?
Un oggetto di mutua esclusione, o MUTEX, è un oggetto creato per l'uso nei programmi per computer. La funzione essenziale di MUTEX è quella di consentire a un thread di programma multiplo di utilizzare una singola risorsa. Generalmente, la funzionalità degli oggetti di mutua esclusione è quella di consentire questo uso di una singola risorsa creando un ambiente in cui l'accesso alla risorsa viene continuamente passato avanti e indietro tra i vari aspetti del programma.
Il processo di attivazione e creazione di un MUTEX ha luogo all'apertura dell'applicazione del programma per computer. In sostanza, il programma creerà il MUTEX e lo metterà in relazione con una risorsa specifica necessaria per l'efficiente funzione del programma aperto. Quando vengono richiamate le risorse, il sistema operativo assegnerà un nome univoco a MUTEX e lo utilizzerà per identificare il processo fino a quando il programma rimane aperto.
Una volta che MUTEX è attivato e denominato per la sessione, qualsiasi altro thread del programma che richiede questa risorsa può avere accesso, anche se la risorsa è già in uso attivo da un altro thread. Indicando la necessità della risorsa, la funzione MUTEX inizierà ad alternare l'accesso della risorsa avanti e indietro tra i thread. Per l'utente finale, questo processo è trasparente. A tutti gli effetti pratici, sembra che due utenti o due thread ci stiano facendo della stessa risorsa contemporaneamente.
Mentre la velocità del trasferimento di accesso è così rapida che non è nemmeno evidente per l'utente finale, va notato che ogni volta che una risorsa viene utilizzata, viene effettivamente bloccata su un thread nella sequenza. Un altro thread che richiede l'uso della risorsa emetterà una richiesta che andrà in una coda e rimarrà lì fino a quando il primo thread non avrà terminato l'uso attivo. A quel punto, la risorsa è sbloccata e la funzione MUTEX consente il thread successivo nella coda di accesso attivo. Se un terzo thread è attivo e necessita della risorsa, MUTEX inserirà anche questo thread nella coda e garantirà l'accesso a rotazione.