Skillnaden mellan Mutex och Semaphore



Mutex vs Semaphore

En mutex är analog med en enda nyckel till ett rum. En person som innehar nyckeln, som är analog med en tråd, är den enda som kan få tillgång till rummet. Den person med tillgång kommer då att ge upp nyckeln till nästa person i linje. Därför kan en mutex endast frisläppas av tråden som förvärvar det.

En mutex används normalt för att serialisera den tillgång till en sektion av en inåtgående kod '' en typ av kod som inte är i stånd att utföras av flera trådar på en gång. Bara en enda tråd tillåts in i en sektion. Detta tvingar de övriga trådarna i kö för att vänta. Innan en tråd får tillgång, måste den vänta tills tråden innan den ger upp avsnittet.

Använda samma analogi i mutex, semaforer är det antal likadana nycklar som kan få tillgång till samma antal rum med liknande lås. En semafor eller värdet av en semafor räkna beror på antalet personer (trådar) som går in eller ur rummet. Om det finns 5 rum och de är alla upptagna, då semafor räkna är noll. Om två lämnar rummet, då räkningen är två och två nycklar ges till nästa två i kön.

Med detta sagt, kan semaforer kan samtidigt signaleras med ett ämne eller process och är idealiska för applikationer som kräver synkronisering. Ändå är semaforer användas för att effektivt begränsa antalet samtidiga användare av en gemensam resurs baserad på maximalt antal semafor.

Så i princip kan en mutex betraktas som en semafor med ett värde av ett.

Minsknings och ökning av semaforen är beroende av huruvida gängorna begär tillgång till den gemensamma resursen eller lämnar sektionen.



I teorin, mutex och (binära) semaforer är semantiskt similar.The genomförandet av mutex kan göras med hjälp av semaforer och så är det tvärtom. Men i praktisk mening, kan de vara lite annorlunda.

Mutexes är avsedda att användas för ömsesidig uteslutning endast och binära semaforer är avsedda att användas för ömsesidig uteslutning och händelsemeddelanden. Även om de är väldigt lika när det gäller genomförande och allmänna semantik, används de på olika sätt.

Sammanfattning:

1. Mutex används typiskt för att serialisera åtkomst till en gemensam resurs, samtidigt som en semafor är ett antal samtidiga accesser.

2. Mutex är som en semafor med en räkning av ett.
3. Mutex tillåter bara en enda tråd att få tillgång medan semaforer kan samtidigt signaleras med ett ämne eller process.