Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 24412|Svare: 1

[Kilde] Forskjellen mellom ManualResetEvent og AutoResetEvent læres gjennom C#-tråder

[Kopier lenke]
Publisert på 31.05.2018 14:59:47 | | | |
La oss diskutere ManualResetEvent først, og jeg vil legge inn noe AutoResetEvent-innhold under diskusjonen for å sammenligne:

ManualResetEvent kan blokkere én eller flere tråder inntil et signal mottas som forteller ManualResetEvent å slutte å blokkere den nåværende tråden.

Informasjon om ManualResetEvent

.net/c# Trådtråd Suspend og gjenoppta utdaterte løsninger
https://www.itsvse.com/thread-4769-1-1.html
(Kilde: Architect_Programmer)


Tenk deg at objektet ManualResetEvent har en boolsk typeegenskap, IsRelease, for å kontrollere om den nåværende tråden skal blokkeres. Vi kan sette denne egenskapen ved initialisering, for eksempel ManualResetEvent event=new ManualResetEvent(false); Dette indikerer at standardegenskapen er å blokkere den nåværende tråden.

Kodeeksempel:



Legg merke til en viktig forskjell mellom ManualResetEvent og AutoResetEvent her:

Manuell vil definitivt sende signal til både tråd 1 og tråd 2.Auto sender bare et signal til én av dem tilfeldig.

Hvorfor heter den ene manuell og den andre auto? Jeg tror dette er et spørsmål mange har, og nå skal vi se nærmere på dette.

Bare now_manualResetEvent. Set(); Jeg tror alle forstår denne setningen, som kan betraktes som å sette egenskapen til IsRelease til sann

_manualResetEvent.WaitOne(); Blokkerer ikke lenger tråd 1 etter å ha mottatt et signal. Verdien av IsRelease gjelder gjennom hele prosessen etter det.Hvis

Hvis du vil returnere verdien av IsRelease til false, må du kalle _manualResetEvent.Reset()-metoden igjen.

Hvis det er _autoResetEvent.set(), vil _autoResetEvent.WaitOne() automatisk sette verdien til IsRelease til falsk.

Derfor kalles den ene automatisk og den andre manuell.



Testkode:







Foregående:. .NETs raskeste OOM-objektkartleggingskomponent, Tiny Mapper, i prosjektpraksis
Neste:C# DEBUG, feilsøkingsinformasjon, utskrift og utdata, detaljert forklaring
 Vert| Publisert på 18.12.2024 20:30:44 |
Både ManualResetEvent og AutoResetEvent arver fraEventWaitHandle, som vist i figuren nedenfor:



Referanse:Innloggingen med hyperkoblingen er synlig.

Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com