Mutex vs Semaphore
En mutex er analog med en enkelt nøgle til et rum. En person, der holder nøglen, som er analog med en tråd, er den eneste, der har adgang til rummet. Personen med adgangen skal derefter opgive nøglen til den næste person på linje. Derfor kan en mutex kun frigøres af den tråd, der får den.
En mutex bruges normalt til at serialisere adgangen til et afsnit af en reentrantkode '' en slags kode, som ikke kan udføres af flere tråde på én gang. Kun en enkelt tråd er tilladt i et afsnit. Dette tvinger de andre tråde i kø til at vente. Før en tråd får adgang, skal den vente til tråden, inden den opgiver sektionen.
Ved hjælp af den samme analogi i mutex er semaforer antallet af lignende nøgler, der har adgang til det samme antal værelser med lignende låse. En semafor eller værdien af en semaforoptælling afhænger af antallet af mennesker (tråde), der kommer ind eller ud af rummet. Hvis der er 5 værelser, og de er alle besat, er semaforoptællingen nul. Hvis to forlader rummet, er tællingen to, og de to taster gives til de næste to i køen.
Med det sagt kan semaforer signaliseres samtidigt af en hvilken som helst tråd eller proces og er ideelle til applikationer, der kræver synkronisering. Ikke desto mindre bruges semaforer til effektivt at begrænse antallet af samtidige brugere af en fælles ressource baseret på det maksimale semaforantal.
Så dybest set kan en mutex betragtes som en semafor med en værdi af en.
Afgrænsningen og forøgelsen af semaforen afhænger af, om tråde anmoder om adgang til den fælles ressource eller forlader sektionen.
I teorien er mutex og (binære) semaforer semantisk ens. Implementeringen af mutex kan udføres ved hjælp af semaforer, og det er omvendt. I praktisk forstand kan de imidlertid være lidt forskellige.
Mutexes er kun beregnet til at blive anvendt til gensidig ekskludering, og binære semaforer er beregnet til at blive brugt til gensidig ekskludering og anmeldelse af begivenheder. Selvom de er meget ens med hensyn til implementering og generel semantik, bruges de forskelligt.
Resumé:
1. Mutex bruges typisk til at serialisere adgang til en fælles ressource, mens en semafor er et antal samtidige adganger.
2. Mutex er som en semafor med en tælling af en.
3. Mutex tillader kun, at en enkelt tråd har adgang, mens semaforer kan signaleres samtidigt af enhver tråd eller proces.
4. Semaforer er ideelle til synkronisering og bruges ofte til begivenhedsmeddelelse og gensidig ekskludering, mens mutex kun anvendes til gensidig ekskludering.