Forskel mellem Mutex og Semaphore Forskel mellem

Anonim

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 kan få adgang til rummet. Personen med adgangen skal derefter opgive nøglen til den næste person i køen. Derfor kan en mutex kun frigives af den tråd, der erhverver den.

En mutex bruges normalt til at serialisere adgangen til en del af en reentrantkode "" en slags kode, der ikke kan udføres af flere tråde på én gang. Kun en enkelt tråd er tilladt i en sektion. Dette tvinger de andre tråde i kø for at vente. Før en tråd får adgang, bliver den nødt til at vente til tråden, inden den giver op.

Brug af samme analogi i mutex er semaforer antallet af lignende nøgler, der kan få adgang til samme antal værelser med tilsvarende låse. En semafor eller værdien af ​​en semafortælling afhænger af antallet af personer (tråde), der kommer ind eller ud af rummet. Hvis der er 5 værelser og de er alle besatte, er semaforetællingen nul. Hvis to forlader værelset, er tællingen to, og de to nøgler gives til de næste to i køen.

Med det sagt kan semaforer samtidigt signaleres af en hvilken som helst tråd eller proces og er ideelle til applikationer, der kræver synkronisering. Ikke desto mindre er semaforer brugt til effektivt at begrænse antallet af samtidige brugere af en fælles ressource baseret på det maksimale antal semaphore.

Så grundlæggende kan en mutex betragtes som en semafor, der har en værdi af en.

Reduktion og stigning af semaforen afhænger af, om tråde kræver adgang til den fælles ressource eller forlader sektionen.

I teorien er mutex og (binære) semaforer semantisk ens. Implementeringen af ​​mutex kan gøres ved brug af semaforer, og det er også den anden vej. Men i den praktiske forstand kan de være lidt anderledes.

Mutexes er kun beregnet til udelukkende udelukkelse, og binære semaforer er beregnet til at blive brugt til gensidig udelukkelse og begivenhedsanmeldelse. Selv om de er meget ens i form af implementering og generel semantik, bruges de forskelligt.

Sammendrag:

1. Mutex bruges typisk til at serialisere adgangen til en fælles ressource, mens en semafor er en række samtidige adgang.

2. Mutex er som en semafor med et tal af en.

3. Mutex tillader kun en enkelt tråd at få adgang, mens semaforer samtidig kan signaleres af en hvilken som helst tråd eller proces.

4. Semaforer er ideelle til synkronisering og bruges ofte til begivenhedsmeddelelse og gensidig udelukkelse, mens mutex kun anvendes til gensidig udelukkelse.