Mutex vs Semaphore
Mutex bruges til at give serialiseret adgang til en del af en re-entrant-kode, der ikke kan udføres parallelt med mere end en tråd. En mutex sørger for, at kun en kode kan få adgang til det kontrollerede afsnit ad gangen. For at få adgang får andre koder til at vente, indtil den første kode afsluttes. Du kan betragte det som en nøgle til et rum. Den person, der har adgang til denne nøgle, går først. Indtil det tidspunkt, hvor personen vender tilbage, kan ingen andre få adgang til dette rum.
Semaphore giver adgang til en delt ressource til et antal brugere samtidigt. Efterhånden som antallet af brugere, der får adgang til ressourcen, stiger, reduceres semaforantalet. Når brugerne begynder at frigive ressourcen, begynder semaforantællingen at stige igen. Det bruges af applikationer, der kræver synkronisering. Antallet af samtidige brugere er begrænset baseret på semaforegrænsen. En semafor kan betragtes som en masse lignende nøgler til lignende låse til et enkelt værelse, men disse taster er begrænset i antal. Mennesker, der har disse nøgler, kan dele rummet.
Forskelle mellem mutex og semafor:
1. Mutex bruges til gensidig udstødelse, mens semafore finder det nyttigt i begge tilfælde
anmeldelse og gensidige undtagelser.
2. Mutex giver seriel adgang til fælles ressourcer, mens semafore sætter en grænse for
antallet af samtidige adganger.
3. En mutex fungerer med en tråd ad gangen, mens semaphore administrerer flere tråde
sammen.
4. Mutex har et koncept af en ejer, hvor processen, der låser mutex, kun kan
genåbne det. Ingen af de andre processer kan gøre det. Men i tilfælde af semafor, sådan
begrænsninger findes ikke.
5. En mutex er en låsemekanisme, mens en semafor er en signalmekanisme med
med hensyn til synkronisering af adgang til en ressource.
Resumé:
1. Semantisk og teoretisk er både mutex og semafore de samme. Man kan være det
implementeret ved hjælp af den anden, men praktisk taget er begge forskellige.
2. En mutex er intet andet end en semafor med en tælleværdi lig med en.
3. En mutex er en semafor med yderligere funktioner som ejerskab og prioriteret inversion
beskyttelse.
4. En semafor er en abstrakt datatype, der kontrollerer adgangen til en fælles ressource ved
flere processer i et parallelt programmeringsmiljø.
5. Semaphore finder anvendelse i mange operativsystemer som synkroniseringsprimitiv.
6. Både mutex og semaphore er kerneressourcer, der bruges til formålet
synkronisering.