Mutex vs. tapahtuma
C #: ssä on paljon erilaisia kierteiden synkronointivaihtoehtoja. Kaksi laajemmin käytettyä ovat mutex ja event. Mikä on ero näiden kahden välillä? Kumpi on parempi vaihtoehto?
Tapahtumavaihtoehto voi antaa ketjuille mahdollisuuden estää, kunnes tapahtuma lähetetään, jolloin nimi on ”tapahtuma”. Se on sama kuin asettaa jotain nukkumaan ja herätä vain, kun jotain merkittävää tapahtuu. Tapahtumat ovat toisin kuin mutexit, koska mutexeilla ei ole signalointivaihtoehtoa tai toimintoa. Tapahtumat pystyvät poistamaan signaalin, kun joku, joka pystyi odottamaan sitä, on herätetty. Jopa sovellusliittymät voivat sallia vaihtoehdon estää, kunnes yhdestä tai kaikista eri tapahtumista on ilmoitettu. Lisäksi tapahtumat ovat ydinobjekteja. Ne eivät ole “kevyempiä” verrattuna mutexeihin. Tapahtuma on periaatteessa ydinobjekti, jolla on kaksi tilaa. Normaalisti tapahtuma merkitsee tapahtuman saapumista ja joskus jopa I / O-toiminnan lopettamista.
”Mutex” tarkoittaa keskinäistä poissulkemista. Se on eräs muoto laaja-alaisesta koordinointimekanismista jaetuille resursseille. Ajattele sitä eräänlaisena liiketoimana. Sinua ei tarvitse odottaa, vaikka haluat käyttää muutamia jaettuja resursseja (vain siinä tapauksessa, että muut ovat jo käyttämässä sitä) estämäsi. Mutex koostuu kahdesta tilasta, vaikka se on olemassa keskinäisen poissulkemisen toteuttamiseksi. Tämä on tarkoitettu, kun haluat suojata koodijaksoa, joka yleensä päivittää jaetun resurssin siitä osasta, jossa mutexin väitetään, siihen osaan, jossa se julkaistaan. Tämä johtaa siihen, että mikään muu lanka ei voi kulkea osuuden läpi.
Ihmisten, jotka ovat yrittäneet simuloida tapahtumaa mutexin avulla, oli törmännyt ongelmaan, jossa heti kun lukko on hankittu tai tapahtumasta ilmoitettu, henkilö pitää kaikkia muita ulkona, kunnes lukko vapautetaan. Tämä ei ole ilmoitetun tapahtuman semantiikkaa. Tapahtuma voi pysyä lähetettynä ja portin muoto on käytettävissä kaikille säiketestauksille, jos ei ole lukkoja. Mutex, joka on sitoutunut prosessien väliseen synkronointiin, on ytimen moodissa. Yhden menetelmän mukaiset monisäikeiseen synkronointiin tehdyt tapahtumat ovat käyttäjätilan objektissa.
Mutex-esine on liian raskas ja liian yleinen. Tapahtumaobjektit ovat paljon kevyempiä. Käyttäjätilan synkronointia käytetään useimmissa tilanteissa johtuen siitä, että se antaa vähemmän suorittimen jaksoja. Mutex on hyvin kuin kriittinen osa ja sitä käytetään synkronoimaan pääsy jaettuihin resursseihin. Tapahtumilla on täysin erilainen toiminto, koska niitä käytetään synkronoimaan tehtäviä tai hallitsemaan joidenkin ihmisten tehtävien ajoitusta.
Tapahtumat ovat enemmän tilamuuttujia, toisin kuin Mutex, joka on enemmän kuin
monitoroida jossain terminologiassa, tai se voi olla perinteinen muoto semafori / muteksi.
Yhteenveto:
1.Tapahtumavaihtoehto voi antaa ketjuille mahdollisuuden estää tapahtuman lähettämistä, jolloin nimi on ”tapahtuma”.
2.Tapahtuma on periaatteessa ydinobjekti, jolla on kaksi tilaa. Normaalisti tapahtuma merkitsee tapahtuman saapumista ja joskus jopa I / O-toiminnan lopettamista.
3. ”Mutex” tarkoittaa keskinäistä poissulkemista. Se on eräs muoto laaja-alaisesta koordinointimekanismista jaetuille resursseille.
4.Mutex, joka on sitoutunut prosessien väliseen synkronointiin, on ytimen tilassa. Yhden menetelmän mukaiset monisäikeiseen synkronointiin tehdyt tapahtumat ovat käyttäjätilan objektissa.
5.Tapahtumat ovat enemmän tilamuuttujia, toisin kuin Mutex, joka on enemmän kuin
monitoroida jossain terminologiassa, tai se voi olla perinteinen muoto semafori / muteksi.