Un oggetto di mutua esclusione, o MUTEX, è un oggetto creato per essere utilizzato nei programmi per computer. La funzione essenziale di MUTEX è quella di consentire a un thread di programma multiplo di utilizzare una singola risorsa. In genere, la funzionalità degli oggetti di mutua esclusione consiste nel consentire questo utilizzo 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 avviene 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 il funzionamento efficiente del programma aperto. Quando le risorse vengono richiamate, il sistema operativo assegnerà un nome univoco al MUTEX e lo utilizzerà per identificare il processo finché il programma rimane aperto.
Una volta che il MUTEX è attivato e nominato 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.
Sebbene la velocità di trasferimento dell’accesso sia così rapida da non essere nemmeno percepibile dall’utente finale, va notato che ogni volta che una risorsa è in uso, è effettivamente bloccata su un thread nella sequenza. Un altro thread che richiede l’utilizzo della risorsa emetterà una richiesta che andrà in coda e vi rimarrà fino a quando il primo thread non avrà terminato l’utilizzo attivo. A quel punto, la risorsa è sbloccata e la funzione MUTEX consente l’accesso attivo al thread successivo nella coda. Se un terzo thread è attivo e necessita della risorsa, MUTEX allinea anche questo thread nella coda e concede l’accesso a rotazione.