Skillnaden mellan Mutex och Event



Mutex vs Händelse

I C #, det finns en hel del olika gängsynkroniseringsalternativ. De två större utsträckning är mutex och evenemang. Precis vad exakt är skillnaden mellan dessa två? Vilken är ett bättre alternativ?

Alternativet händelse kan ge trådar möjlighet att blockera fram en händelse sänds alltså namnet 'händelse'. Det är samma sak som att sätta något att sova och bara vakna upp när något av betydelse händer. Händelser är till skillnad från mutexes eftersom mutexes har inte möjlighet signalering eller funktion. Händelser kan rensa signal när någon som kunde vänta på att den har vaknat. Även API 's har möjlighet att låta möjligheten att blockera fram till en eller alla av de olika händelserna signaleras. Dessutom händelser är kärnan föremål. De är inte' lättare 'jämfört med mutexes. En händelse är i grunden en kärna objekt med två stater. normalt en händelse signalerar ankomsten av en händelse och ibland till och med slutet av en i / O-operation.

'Mutex' står för ömsesidig uteslutning. Det är en form av scoped samordningsmekanism för resurser som delas. Tänk på det som en form av transaktion. Du är inte skyldig att vänta även om du vill komma åt några delade resurser (endast i det fall att andra redan tillgång till det) du blockerar. En mutex består av två stater, även om det förekommer att genomföra en ömsesidig uteslutning. Detta är när du vill skydda en sträcka av kod som vanligtvis uppdaterar en delad resurs från den del där den mutex påstås den del där det kommer att släppas. Detta leder till det faktum att ingen andra tråden kan passera genom sektionen.

Människor som har försökt att simulera en händelse med hjälp av en mutex tvungen att stöta på problemet, där så snart låset förvärvas eller händelsen signal den person håller alla andra ut fram till låset släpper. Detta är inte semantiken för en händelse som signaleras. En händelse kan förbli postat och en form av grind kommer att finnas tillgänglig för alla trådtestning i händelsen inte ha några lås. Mutex åtagit sig att inter synkroniseringen är i kernel-läge objekt. Händelser som gjorts för flertrådade synkronisering enligt en metod är i användarläge objekt.

Mutex objekt är för tung och alltför allmän. Händelseobjekt är mycket lättare. Användarläge synkronisering används i de flesta situationer på grund av den anledningen att det ger mindre CPU-cykler. Mutex är så mycket som en kritisk del och används för att synkronisera tillgång till resurser som delas. Händelser har en helt annan funktion eftersom de används för att synkronisera uppgifter eller för hantering av schemaläggning för vissa människor.

Händelser är mer av en tillståndsvariabel, till skillnad från Mutex, som är mer som en
övervaka i några av terminologi, eller det kan vara en traditionell form av semafor / mutex.



Sammanfattning:

1. Alternativet händelsen kan ge trådar möjlighet att blockera fram en händelse sänds, därav namnet 'händelse'.

2. En händelse är i grunden en kärna objekt som har två tillstånd. Normalt, en händelse signalerar ankomsten av en händelse och ibland till och med i slutet av en I / O-operation.

3. 'Mutex' står för ömsesidig uteslutning. Det är en form av scoped samordningsmekanism för resurser som delas.

4. Mutex åtagit sig att inter synkroniseringen är i kernel-läge objekt. Händelser som gjorts för flertrådade synkronisering enligt en metod är i användarläge objekt.

5. Händelser är mer av en tillståndsvariabel, till skillnad från Mutex, som är mer som en