Mutex vs Semaphore
Mutex tiek izmantoti, lai nodrošinātu serializētu piekļuvi atkārtotas piekļuves koda daļai, kuru nevar izpildīt paralēli vairāk nekā vienam pavedienam. Mutex nodrošina, ka kontrolētajai sekcijai vienlaikus var piekļūt tikai viens kods. Lai piekļūtu, citi kodi tiek gaidīti, līdz pirmais kods iziet. Jūs to varat uzskatīt par istabas atslēgu. Vispirms dodas persona, kurai ir pieeja šai atslēgai. Līdz brīdim, kad persona atgriežas, neviens cits nevar piekļūt šai telpai.
Semafors piekļuvi koplietotam resursam nodrošina vienlaikus vairākiem lietotājiem. Palielinoties lietotāju skaitam, kas piekļūst resursam, semaforu skaits samazinās. Tiklīdz lietotāji sāk atbrīvot resursu, semaforu skaits atkal palielinās. To lieto programmas, kurām nepieciešama sinhronizācija. Vienlaicīgu lietotāju skaits ir ierobežots, pamatojoties uz semaforu limitu. Par semaforu var domāt kā līdzīgu atslēgu kopumu līdzīgām slēdzenēm vienā telpā, taču šo atslēgu skaits ir ierobežots. Cilvēki, kuriem ir šīs atslēgas, var dalīties telpā.
Atšķirības starp muteksu un semaforu:
1. Mutex izmanto savstarpējai izslēgšanai, turpretī semafors to izmanto abos gadījumos
paziņošana un savstarpējas izslēgšanas.
2. Mutex nodrošina sērijveida piekļuvi kopīgiem resursiem, turpretī semafors ierobežo
vienlaicīgu piekļuvju skaits.
3. Mutex darbojas ar vienu pavedienu vienlaikus, kamēr semafors pārvalda vairākus pavedienus
kopā.
4. Mutex ir īpašnieka jēdziens, kurā process, kas bloķē mutex, var tikai
atkārtoti to atvērt. Neviens no citiem procesiem to nevar izdarīt. Bet semafora gadījumā tāds
ierobežojumi nepastāv.
5. Mutex ir bloķēšanas mehānisms, savukārt semafors ir signālmehānisms ar
attiecībā uz piekļuves sinhronizēšanu resursā.
Kopsavilkums:
1. Semantiski un teorētiski gan mutex, gan semafors ir vienādi. Var būt
īstenots, izmantojot otru, taču praktiski abi ir atšķirīgi.
2. Mutex ir nekas cits kā semafors, kura skaitīšanas vērtība ir vienāda ar vienu.
3. Mutex ir semafors ar tādām papildu funkcijām kā īpašumtiesības un prioritāra inversija
aizsardzība.
4. Semafors ir abstrakts datu tips, kas kontrolē piekļuvi kopējam resursam
vairāki procesi paralēlās programmēšanas vidē.
5. Semafors daudzās operētājsistēmās tiek izmantots kā primārā sinhronizācija.
6. Gan mutex, gan semafors ir kodola resursi, kas tiek izmantoti
sinhronizācija.