Skip to main content

Cos'è un mutex?

Un oggetto di esclusione reciproca, o Mutex, è un oggetto creato per l'uso nei programmi per computer.La funzione essenziale di Mutex è consentire a un thread di programma multiplo di utilizzare una singola risorsa.In generale, la funzionalità degli oggetti di esclusione reciproca consente 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 avviene quando l'applicazione del programma per computer viene aperta.In sostanza, il programma creerà Mutex e lo collegherà a una risorsa specifica necessaria per la funzione efficiente del programma aperto.Man mano che le risorse vengono chiamate, il sistema operativo assegnerà un nome univoco a Mutex e lo utilizzerà per identificare il processo fintanto che il programma rimane aperto.

Una volta attivato e nominato il mutex 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 una necessità per la risorsa, la funzione Mutex inizierà ad alternare l'accesso alla risorsa avanti e indietro tra i thread.Per l'utente finale, questo processo è trasparente.Per tutti gli intenti e scopi pratici, sembra che due utenti o due thread ci stiano realizzando contemporaneamente la stessa risorsa.

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 è in uso, viene effettivamente bloccata a un thread nella sequenza.Un altro thread che richiede l'uso della risorsa emetterà una richiesta che andrà in coda e rimarrà lì fino a quando il primo thread non avrà terminato l'uso attivo.A quel punto, la risorsa viene sbloccata e la funzione Mutex consente il thread successivo nell'accesso attivo della coda.Se un terzo thread è attivo e ha bisogno della risorsa, Mutex allineerà anche questo thread nella coda e concederà l'accesso su base rotante.