„Mutex vs Semaphore“
„Mutex“ yra analogiškas vieno kambario klavišui. Žmogus, turintis raktą, kuris yra analogiškas sriegiui, yra vienintelis, kuris gali patekti į kambarį. Tada asmuo, turintis prieigą, turės atsisakyti rakto kitam eilėje esančiam asmeniui. Todėl muteksą gali išlaisvinti tik jį gavęs siūlas.
„Mutex“ paprastai naudojamas norint nuosekliai sujungti prieigą prie reentranto kodo „„ kodo, kurio neįmanoma įvykdyti keliomis gijomis vienu metu. Į skyrių leidžiama naudoti tik vieną siūlą. Tai verčia kitus eilės siūlus laukti. Kad sriegis galėtų patekti, jis turės palaukti, kol sriegis atmes dalį.
Naudojant tą pačią mutex analogiją, semaforos yra panašių raktų, kuriais galima patekti į tą patį kambarių skaičių su panašiomis spynomis, skaičius. Semaforas arba semaforo skaičiaus vertė priklausys nuo žmonių (siūlų), įeinančių ar išeinančių iš kambario, skaičiaus. Jei yra 5 kambariai ir jie visi yra užimti, tada semaforų skaičius yra lygus nuliui. Jei du išeina iš kambario, tada skaičius yra du ir du klavišai atiduodami kitiems dviem eilėje.
Atsižvelgiant į tai, semaforus tuo pačiu metu gali signalizuoti bet kokia gija ar procesas ir jie yra idealūs programų, kurias reikia sinchronizuoti, metu. Nepaisant to, semaforai yra naudojami veiksmingai apriboti tuo pačiu metu naudojamų bendro šaltinio vartotojų skaičių, remiantis maksimaliu semaforų skaičiumi.
Taigi iš esmės muteksą galima laikyti semaforu, kurio vertė yra viena.
Semaforo mažėjimas ir didėjimas priklauso nuo to, ar gijos prašo prieigos prie bendro šaltinio, ar išeina iš skyriaus.
Teoriškai mutex ir (dvejetainiai) semaforos yra semantiškai panašios. Mutex įdiegimas gali būti atliekamas naudojant semaforus, taip yra atvirkščiai. Tačiau praktine prasme jie gali būti šiek tiek kitokie.
„Mutexes“ ketinama naudoti tik abipusiam išskyrimui, o dvejetainius semaforus - abipusiam išskyrimui ir pranešimui apie įvykius. Nors jie yra labai panašūs diegimo ir bendrosios semantikos prasme, jie naudojami skirtingai.
Santrauka:
1. „Mutex“ paprastai naudojamas paeiliui pasiekti prieigą prie bendro šaltinio, o semaforas yra keletas vienu metu vykstančių prieigų..
2. „Mutex“ yra tarsi semaforas, kurio skaičius yra vienas.
3. „Mutex“ suteikia prieigą tik vienam gijui, tuo tarpu semaforus tuo pačiu metu gali signalizuoti bet kuris gija ar procesas.
4. Semaforai yra idealūs sinchronizavimui ir dažnai naudojami pranešti apie įvykius ir abipusiai atskirtims, o mutex taikoma tik abipusiam išskyrimui..