Razlika između mutexa i događaja

Mutex vs Događaj



U C # postoji puno različitih mogućnosti sinkronizacije navoja. Dvije šire korištene su muteks i događaj. U čemu je točno razlika između ovo dvoje? Koji je bolji izbor?

Opcija događaja može nitima dati mogućnost blokiranja sve dok se događaj ne emitira pa naziv 'događaj'. To je isto kao uspavati nešto i probuditi ga samo kad se dogodi nešto značajno. Događaji su za razliku od muteksa jer muteksi nemaju mogućnost ili funkciju signalizacije. Događaji mogu očistiti signal nakon što se probudi netko tko ga je mogao pričekati. Čak i API-ji mogu dopustiti opciju blokiranja dok se ne signalizira jedan ili svi različiti događaji. Uz to, događaji su objekti jezgre. Nisu 'lakši' u usporedbi s muteksima. Događaj je u osnovi objekt jezgre koji ima dva stanja. Obično događaj signalizira dolazak događaja, a ponekad čak i kraj I / O operacije.

'Mutex' znači uzajamno isključivanje. To je oblik mehanizma koordinacije opsega za resurse koji se dijele. Shvatite to kao oblik transakcije. Niste dužni čekati, iako želite pristupiti nekoliko zajedničkih resursa (samo u slučaju da im drugi već pristupaju) koje blokirate. Mutex se sastoji od dva stanja, iako postoji kako bi se izvršilo međusobno isključivanje. To je za slučaj kada želite zaštititi dio koda koji obično ažurira zajednički resurs s dijela u kojem se polaže pravo na mutex na dio u kojem će biti objavljen. To dovodi do činjenica da nijedna druga nit ne može proći kroz presjek.



Ljudi koji su pokušali simulirati događaj uz pomoć mutexa morali su naići na problem kada čim se zaključa ili se signalizira događaj, osoba drži sve ostale na miru dok se brava ne oslobodi. Ovo nije semantika događaja koji se signalizira. Događaj može ostati objavljen i oblik vrata bit će dostupan za sva testiranja niti u slučaju da nema zaključavanja. Mutex posvećen međuprocesnoj sinkronizaciji nalazi se u objektu u načinu jezgre. Događaji izrađeni za višenitnu sinkronizaciju prema jednoj metodi nalaze se u korisničkom načinu rada.

Mutex objekt je pretežak i preopćenit. Predmeti događaja su puno lakši. Sinkronizacija u korisničkom načinu rada koristi se u većini situacija iz razloga što daje manje CPU ciklusa. Mutex je vrlo sličan kritičnom odjeljku i koristi se za sinkronizaciju pristupa dijeljenim resursima. Događaji imaju potpuno drugačiju funkciju jer se koriste za sinkronizaciju zadataka ili za upravljanje rasporeda zadataka za neke ljude.

Događaji su više varijabla stanja, za razliku od Mutexa, koji je više poput a
pratiti u nekoj terminologiji, ili to može biti tradicionalni oblik semafora / mutexa.



Sažetak:

1. Opcija događaja može nitima dati mogućnost blokiranja sve dok se događaj ne emitira, pa naziv 'događaj'.

2. Događaj je u osnovi objekt jezgre koji ima dva stanja. Obično događaj signalizira dolazak događaja, a ponekad čak i kraj I / O operacije.



3. 'Mutex' znači uzajamno isključivanje. To je oblik opsega koordinacijskog mehanizma za resurse koji se dijele.

4.Mutex predan međuprocesnoj sinkronizaciji nalazi se u objektu u načinu jezgre. Događaji izrađeni za višenitnu sinkronizaciju prema jednoj metodi nalaze se u korisničkom načinu rada.

5.Događaji su više varijabla stanja, za razliku od Mutexa, koji je više poput a
pratiti u nekoj terminologiji, ili to može biti tradicionalni oblik semafora / mutexa.