Starpība starp Mutex un Semaforu

Mutex vs Semaphore

Mutex ir analogs vienas istabas atslēgai. Persona, kurai ir atslēga, kas ir analoga pavedienam, ir vienīgā, kurai var piekļūt telpā. Personai ar piekļuvi būs jāatsakās no atslēgas nākamajai rindā esošajai personai. Tāpēc muteksu var atbrīvot tikai pavediens, kas to iegūst.

Mutex parasti tiek izmantots, lai serializētu piekļuvi reentranta koda sadaļai “tāda veida kods, kuru nevar izpildīt vairāki pavedieni vienlaikus. Sadaļā atļauts izmantot tikai vienu pavedienu. Tas liek pārējiem rindā esošajiem pavedieniem gaidīt. Lai pavediens varētu piekļūt, tam būs jāgaida, līdz pavediens tiek pamests no sadaļas.

Izmantojot to pašu analoģiju mutex, semafori ir līdzīgu atslēgu skaits, ar kurām var piekļūt vienādam skaitam istabu ar līdzīgām slēdzenēm. Semafors vai semaforu skaita vērtība būs atkarīga no cilvēku (pavedienu) skaita, kuri ieiet telpā vai iziet no tās. Ja ir 5 istabas un tās visas ir aizņemtas, tad semaforu skaits ir nulle. Ja divi atstāj istabu, tad to skaits ir divi un divi taustiņi tiek doti nākamajiem diviem rindā.

To sakot, semaforus vienlaikus var signalizēt jebkurš pavediens vai process, un tie ir lieliski piemēroti lietojumprogrammām, kurām nepieciešama sinhronizācija. Neskatoties uz to, semaforus izmanto, lai efektīvi ierobežotu vienota resursa vienlaicīgu lietotāju skaitu, pamatojoties uz maksimālo semaforu skaitu.

Tātad būtībā muteksu var uzskatīt par semaforu, kura vērtība ir viena.

Semafora samazinājums un palielinājums ir atkarīgs no tā, vai pavedieni pieprasa piekļuvi kopējam resursam vai atstāj sadaļu.

Teorētiski mutex un (binārie) semafori ir semantiski līdzīgi. Mutex ieviešanu var veikt, izmantojot semaforus, un tas ir tieši otrādi. Tomēr praktiskā nozīmē tie var būt nedaudz atšķirīgi.

Mutex ir paredzēts izmantot tikai savstarpējai izslēgšanai, un bināros semaforus paredzēts izmantot savstarpējai izslēgšanai un notikumu paziņošanai. Lai arī ieviešanas un vispārējās semantikas ziņā tie ir ļoti līdzīgi, tie tiek izmantoti atšķirīgi.

Kopsavilkums:

1. Mutex parasti izmanto, lai serializētu piekļuvi kopīgam resursam, savukārt semafors ir vairāku vienlaicīgu piekļuvju skaits.

2. Mutex ir kā semafors, kura skaits ir viens.
3. Mutex ļauj piekļūt tikai vienam pavedienam, kamēr semaforus vienlaikus var signalizēt jebkurš pavediens vai process.

4. Semafori ir ideāli sinhronizēšanai un bieži tiek izmantoti notikumu paziņošanai un savstarpējai izslēgšanai, kamēr mutex tiek izmantots tikai savstarpējai izslēgšanai..