Mutex vs semafor
Mutex on analoogne toa ühe võtmega. Keermega analoogset võtit omav inimene on ainus, kes pääseb ruumi. Juurdepääsuga inimene peab siis võtme järgmisele reale loovutavale inimesele loobuma. Seetõttu saab mutexi vabastada ainult selle omandav niit.
Mutexit kasutatakse tavaliselt selleks, et järjestada juurdepääs reentrandi koodi jaole "selline kood", mida ei saa mitu lõime korraga käivitada. Sektsiooni on lubatud ainult üks niit. See sunnib teisi järjekorra niite ootama. Enne kui niidile juurde pääseb, peab ta enne lõigust loobumist ootama, kuni niit saab.
Kasutades sama analoogiat mutexis, on semafooride arv sarnaste võtmete arv, millega pääseb juurde sama arvu samalaadsete lukkudega ruumidele. Semafor või semaforide arvu väärtus sõltub inimeste (niitide) arvust, kes sisenevad ruumist või väljuvad sellest. Kui ruume on 5 ja nad kõik on hõivatud, on semaforide arv null. Kui kaks lahkuvad ruumist, on loendeid kaks ja kaks klahvi antakse järjekorras kahele järgmisele.
Sellegipoolest saab semafooridest samaaegselt märku anda ükskõik milline niit või protsess ja need sobivad ideaalselt sünkroonimist vajavate rakenduste jaoks. Sellegipoolest kasutatakse semafore, et tõhusalt piirata ühise ressursi samaaegsete kasutajate arvu maksimaalse semaforide arvu põhjal.
Nii et põhimõtteliselt võib muteksi pidada semaforiks, mille väärtus on üks.
Semafori vähenemine ja juurdekasv sõltuvad sellest, kas lõimed taotlevad juurdepääsu ühisele ressursile või lahkuvad lõigust.
Teoreetiliselt on mutex ja (binaarsed) semafoorid semantiliselt sarnased. Mutexi rakendamine võib toimuda semafooride abil ja nii on ka vastupidi. Kuid praktilises mõttes võivad nad olla natuke erinevad.
Mutekse on ette nähtud kasutada ainult vastastikuse välistamise korral ning binaarseid semafoore on ette nähtud kasutada vastastikuseks välistamiseks ja sündmustest teatamiseks. Ehkki need on rakendamise ja üldise semantika osas väga sarnased, kasutatakse neid erinevalt.
Kokkuvõte:
1. Mutexi kasutatakse tavaliselt ühisele ressursile juurdepääsu järjestamiseks, samal ajal kui semafor on mitu samaaegset juurdepääsu.
2. Mutex on nagu semafor, mille arv on üks.
3. Mutex võimaldab juurdepääsu ainult ühele lõimele, samas kui semaforidele saab samaaegselt märku anda mis tahes lõime või protsessiga.
4. Semafoorid sobivad ideaalselt sünkroonimiseks ja neid kasutatakse sageli sündmustest teavitamiseks ja vastastikuseks välistamiseks, samal ajal kui mutexi kasutatakse ainult vastastikuse välistamise korral.