Mutex vs sündmus
C #-s on palju erinevaid keermestamise sünkroonimisvõimalusi. Kaks laiemalt kasutatavat on mutex ja event. Mis täpselt nende kahe vahel vahet on? Milline neist on parem variant?
Sündmusevalik on võimeline andma niitidele võimaluse blokeerida kuni sündmuse edastamiseni, seega nimeks „sündmus“. See on sama, kui midagi magama panna ja ärgata ainult siis, kui midagi olulist juhtub. Sündmused on erinevalt mutexidest, kuna mutexidel pole signaalimisvõimalust ega funktsiooni. Sündmused suudavad signaali kustutada, kui keegi, kes suutis seda oodata, on üles äratatud. Isegi API-d võimaldavad blokeerida, kuni ühele või kõigile erinevatele sündmustele antakse märguanne. Lisaks on sündmused kerneli objektid. Võrreldes mutexidega pole need “kergemad”. Sündmus on põhimõtteliselt tuumaobjekt, millel on kaks olekut. Tavaliselt annab sündmus märku sündmuse saabumisest ja mõnikord isegi I / O-toimingu lõppemisest.
“Mutex” tähistab vastastikust välistamist. See on jagatud ressursside ulatusliku koordineerimise mehhanism. Mõelge sellele kui tehinguvormile. Te ei ole kohustatud ootama, kuigi soovite juurdepääsu mõnele jagatud ressursile (ainult juhul, kui teised juba pääsevad sellele juurde), mille te blokeerite. Mutex koosneb kahest olekust, ehkki see on olemas vastastikuse välistamise rakendamiseks. See on mõeldud siis, kui soovite kaitsta koodilõiku, mis värskendab tavaliselt jagatud ressurssi selle osa suhtes, milles mutexi väidetakse, selle osa suhtes, milles see vabastatakse. See viib asjaolu, et ükski teine niit ei saa sektsiooni läbida.
Inimesed, kes on üritanud sündmust simuleerida mutexi abil, pidid kokku puutuma probleemiga, kus kohe, kui lukk on omandatud või sündmusele märku antud, hoiab inimene kõiki teisi kuni luku vabastamiseni välja. See pole signaalitava sündmuse semantika. Sündmus võib jääda postitatuks ja juhul, kui lukud puuduvad, on kõigi lõimede testimiseks saadaval värav. Protsessidevahelisele sünkroniseerimisele pühendunud Mutex on kerneli režiimi objektis. Mitme keermega sünkroonimiseks ühe meetodi kohaselt tehtud sündmused on kasutajarežiimi objektis.
Mutexi objekt on liiga raske ja liiga üldine. Ürituse objektid on palju kergemad. Kasutajarežiimi sünkroonimist kasutatakse enamikus olukordades põhjusel, et see annab vähem protsessori tsükleid. Mutex sarnaneb väga kriitilise jaotisega ja seda kasutatakse ühiskasutatavatele ressurssidele juurdepääsu sünkroonimiseks. Sündmustel on täiesti erinev funktsioon, kuna neid kasutatakse mõne inimese jaoks ülesannete sünkroonimiseks või ülesannete ajakava haldamiseks.
Sündmused on pigem tingimuste muutuja, erinevalt Mutexist, mis sarnaneb rohkem a-ga
jälgida mõnes terminoloogias või võib see olla semafori / mutexi traditsiooniline vorm.
Kokkuvõte:
1.Sündmuse valik on võimeline andma niitidele võimaluse blokeerida kuni sündmuse edastamiseni, seega nimi “sündmus”.
2.Üritus on põhimõtteliselt tuumaobjekt, millel on kaks olekut. Tavaliselt annab sündmus märku sündmuse saabumisest ja mõnikord isegi I / O-toimingu lõppemisest.
3. “Mutex” tähistab vastastikust välistamist. See on jagatud ressursside ulatusliku koordineerimise mehhanism.
4.Mutex, mis on pühendunud protsessidevahelisele sünkroniseerimisele, on kerneli režiimis. Mitme keermega sünkroonimiseks ühe meetodi kohaselt tehtud sündmused on kasutajarežiimi objektis.
5.Eventts on pigem tingimuste muutuja, erinevalt Mutexist, mis sarnaneb rohkem a-ga
jälgida mõnes terminoloogias või võib see olla semafori / mutexi traditsiooniline vorm.