Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 24412|Svar: 1

[Källa] Skillnaden mellan ManualResetEvent och AutoResetEvent lärd sig av C#-trådar

[Kopiera länk]
Publicerad på 2018-05-31 14:59:47 | | | |
Låt oss först diskutera ManualResetEvent, och jag kommer att blanda in lite AutoResetEvent-innehåll under diskussionen för att jämföra:

ManualResetEvent kan blockera en eller flera trådar tills en signal tas emot som säger åt ManualResetEvent att sluta blockera den aktuella tråden.

Information om ManualResetEvent

.net/c# Trådtråd Suspend och Resume föråldrade lösningar
https://www.itsvse.com/thread-4769-1-1.html
(Källa: Architect_Programmer)


Föreställ dig att objektet ManualResetEvent har en Boolean-typegenskap, IsRelease, för att styra om den aktuella tråden ska blockeras. Vi kan ställa in denna egenskap vid initiering, såsom ManualResetEvent event=new ManualResetEvent(false); Detta indikerar att standardegenskapen är att blockera den aktuella tråden.

Kodexempel:



Observera en viktig skillnad mellan ManualResetEvent och AutoResetEvent här:

Manuella kommer definitivt att skicka en signal till både tråd 1 och tråd 2,Auto skickar bara en signal till en av dem slumpmässigt.

Varför kallas den ena manuell och den andra auto? Jag tror att detta är en fråga som många har, och nu ska vi titta på den.

Bara now_manualResetEvent. Set(); Jag tror att alla förstår denna mening, som kan ses som att sätta egenskapen IsRelease till sann

_manualResetEvent.WaitOne(); Blockerar inte längre tråd 1 efter att ha mottagit en signal. Värdet av IsRelease är sant genom hela processen därefter.Om

Om du vill återställa värdet av IsRelease till false måste du anropa metoden _manualResetEvent.Reset() igen.

Om det är _autoResetEvent.set(), kommer _autoResetEvent.WaitOne() automatiskt att sätta värdet på IsRelease till false.

Det är därför den ena kallas auto och den andra manuell.



Testkod:







Föregående:. .NET:s snabbaste OOM-objektmappningskomponent, Tiny Mapper, i projektpraxis
Nästa:C# DEBUGG, debuggningsinformation, utskrift och utmatning, detaljerad förklaring
 Hyresvärd| Publicerad på 2024-12-18 20:30:44 |
Både ManualResetEvent och AutoResetEvent ärver frånEventWaitHandle, som visas i figuren nedan:



Hänvisning:Inloggningen med hyperlänken är synlig.

Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com