Mis vahe on mutexil ja semaforil? Mida kasutaksite juurdekasvu toimingutele juurdepääsu kaitsmiseks?


Vastus 1:

Semafori POSIX-i määratlus on hea lähtepunkt:

Semafor on täisarv, mille väärtusel ei tohi kunagi langeda alla nulli. Semafooridega saab teha kaks toimingut: semafori väärtust suurendatakse ühe võrra; ja vähendage semafori väärtust ühe võrra. [1]

Mutex on kontseptuaalselt semafor, millel on lisaomadus, mille väärtus ei tohi kunagi tõusta üle ühe.

Kuid see täiendav piirang muudab mutexi rakendamise ja kasutamise piisavalt erinevaks kui semafori rakendamine ja kasutamine, et õigustada nende kahe eraldi asja kaalumist.

Joonealused märkused

[1] sem_overview (7): ülevaade POSIX-i semafooridest


Vastus 2:

Semafor on üldisem termin.

„Mutex” on lühike mõiste „vastastikuse välistamise semafoor”. See on ühte tüüpi semafoor, mis võimaldab mutex-iga kaitstud andmeid igal ajahetkel kasutada ainult ühel kommentaare.

Samuti on loendatud semafoorid, mis võimaldavad kuni mõne suvalise maksimaalse arvu niitidel kasutada semaforiga kaitstud andmeid antud ajahetkel. Need on siiski natuke vähem levinud.

Juurdepääsu kaitsmiseks soovite tõenäoliselt mutexi.

Loendatud semafoor oleks kasulik näiteks kindla suurusega järjekorra jaoks. Kui teil on järjekorras saadaval N tühikut, võite ärgata N kirjutajale, et nad järjekorda kirjutaksid. Samuti, kui järjekorras on M üksust, võite ärgata M niitide järgi, et järjekorrast lugeda.

Pange tähele, et mõlemal juhul on teil tõenäoliselt kas mutex või mõni aatomimuutuja, mis tagab, et ainult üks niit korraga muudab tegelikult näiteks osuti / indeksit kirjutamiseks või osuti / indeksi lugemiseks.


Vastus 3:

Semafor on üldisem termin.

„Mutex” on lühike mõiste „vastastikuse välistamise semafoor”. See on ühte tüüpi semafoor, mis võimaldab mutex-iga kaitstud andmeid igal ajahetkel kasutada ainult ühel kommentaare.

Samuti on loendatud semafoorid, mis võimaldavad kuni mõne suvalise maksimaalse arvu niitidel kasutada semaforiga kaitstud andmeid antud ajahetkel. Need on siiski natuke vähem levinud.

Juurdepääsu kaitsmiseks soovite tõenäoliselt mutexi.

Loendatud semafoor oleks kasulik näiteks kindla suurusega järjekorra jaoks. Kui teil on järjekorras saadaval N tühikut, võite ärgata N kirjutajale, et nad järjekorda kirjutaksid. Samuti, kui järjekorras on M üksust, võite ärgata M niitide järgi, et järjekorrast lugeda.

Pange tähele, et mõlemal juhul on teil tõenäoliselt kas mutex või mõni aatomimuutuja, mis tagab, et ainult üks niit korraga muudab tegelikult näiteks osuti / indeksit kirjutamiseks või osuti / indeksi lugemiseks.