Mutex vs Semaphore
En mutex er analog med en enkelt nøkkel til et rom. En person som holder nøkkelen, som er analog med en tråd, er den eneste som kan få tilgang til rommet. Personen med tilgangen må da gi nøkkelen til neste person i kø. Derfor kan en mutex bare slippes ut av tråden som kjøper den.
En mutex brukes vanligvis til å serialisere tilgangen til en del av en reentrantkode "" en slags kode som ikke kan utføres av flere tråder samtidig. Bare en enkelt tråd er tillatt i en seksjon. Dette tvinger de andre trådene i kø for å vente. Før en tråd får tilgang, må den vente til tråden før den gir opp delen.
Ved å bruke samme analogi i mutex er semaforer antall tilsvarende nøkler som kan få tilgang til samme antall rom med lignende låser. En semafor eller verdien av en semafortelling vil avhenge av antall personer (tråder) som kommer inn eller ut av rommet. Hvis det er 5 rom og de er alle opptatt, er semaforantallet null. Hvis to forlater rommet, er tellingen to og de to tastene blir gitt til de neste to i køen.
Med det sagt kan semaforer samtidig signaliseres av en hvilken som helst tråd eller prosess, og er ideelle for applikasjoner som krever synkronisering. Likevel er semaforer brukt til å effektivt begrense antall samtidige brukere av en felles ressurs basert på maksimal antall semaforer.
Så i utgangspunktet kan en mutex betraktes som en semafor som har en verdi av en.
Nedgangen og økningen av semaforen er avhengig av om tråder ber om tilgang til fellesressursen eller forlater seksjonen.
I teorien er mutex og (binære) semaforer semantiske like. Implementeringen av mutex kan gjøres ved bruk av semaforer, og det er også den andre veien. Men i praktisk forstand kan de være litt annerledes.
Mutexes er ment å brukes kun for gjensidig utestenging, og binære semaforer er ment å brukes til gjensidig utelukkelse og hendelsemelding. Selv om de er svært liknende når det gjelder implementering og generell semantikk, brukes de forskjellig.
Sammendrag:
1. Mutex brukes vanligvis til å serialisere tilgang til en felles ressurs mens en semafor er en rekke samtidige tilganger.
2. Mutex er som en semafor med en telling av en.
3. Mutex tillater bare en enkelt tråd å få tilgang, mens semaforer kan samtidig signaliseres av en hvilken som helst tråd eller prosess.
4. Semaforer er ideelle for synkronisering og brukes ofte til hendelsesvarsling og gjensidig utestenging mens mutex kun brukes for gjensidig utestenging.