Mutex vs Semaphore
Mutex används för att ge seriell åtkomst till en del av en återkommande kod som inte kan utföras parallellt med mer än en tråd. En mutex ser till att endast en kod kan nå den kontrollerade sektionen åt gången. För att få åtkomst görs andra koder för att vänta tills den första koden avslutas. Du kan betrakta det som en nyckel till ett rum. Den person som har tillgång till den nyckeln först börjar först. Fram till den tid personen kommer tillbaka, kan ingen annan komma åt det rummet.
Semaphore ger tillgång till en gemensam resurs till ett antal användare samtidigt. Eftersom antalet användare som använder resursen ökar, minskar semaphore counten. När användarna börjar släppa resursen börjar semaphore counten stiga igen. Den används av program som kräver synkronisering. Antalet samtidiga användare är begränsat baserat på semaforgränsen. En semafor kan anses som en massa liknande nycklar till liknande lås till ett enkelrum, men dessa nycklar är begränsade i antal. Personer som har dessa nycklar kan dela rummet.
Skillnader mellan mutex och semafor:
1. Mutex används för ömsesidig uteslutning medan semafor finner sin nytta i båda händelserna
anmälan och ömsesidiga undantag.
2. Mutex ger seriell tillgång till gemensamma resurser medan semafor sätter en gräns för
antalet samtidiga tillträden.
3. En mutex arbetar med en tråd i taget medan semaphore hanterar flera trådar
tillsammans.
4. Mutex har ett koncept för en ägare där processen som låser mutex bara kan
öppna den igen. Ingen av de andra processerna kan göra det. Men i fallet med semafor, så
begränsningar existerar inte.
5. En mutex är en låsningsmekanism medan en semafor är en signalmekanism med
respekt för synkroniseringsåtkomst till en resurs.
Sammanfattning:
1. Semantiskt och teoretiskt är både mutex och semafor densamma. Man kan vara
implementeras med den andra, men praktiskt taget är båda olika.
2. En mutex är ingenting annat än en semafor med ett talvärde som är lika med ett.
3. En mutex är en semafor med ytterligare funktioner som ägande och prioriterad inversion
skydd.
4. En semafor är en abstrakt datatyp som styr åtkomst till en gemensam resurs av
flera processer i en parallell programmeringsmiljö.
5. Semaphore finner sin användning i många operativsystem som synkronisering primitiv.
6. Både mutex och semafor är kärnresurser som används för syftet med
synkronisering.