Forskjell mellom Mutex og Semaphore Forskjellen mellom

Anonim

Mutex vs Semaphore

En mutex er analog med en enkeltnø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.

Bruk av samme analogi i mutex er semaforer antall lignende 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.

Minimering og økning av semaforen er avhengig av om tråder ber om tilgang til fellesressursen eller forlater seksjonen.

I teorien er mutex og (binære) semaforer semantisk liknende. 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 å bare brukes for gjensidig utestenging, og binære semaforer er ment å brukes til gjensidig utelukkelse og hendelsesvarsling. 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 å ha 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.