Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 17115|Vastaus: 0

[Viestintä] Yksityiskohtainen selitys AutoResetEventistä osoitteessa .net/c#

[Kopioi linkki]
Julkaistu 20.3.2018 13.19.01 | | |

Säikeisiin liittyvät käsitteet
1. Säikeiden synkronointi
ManualResetEvent
Set()-menetelmä asettaa tilan Signaled-muotoon
Reset() asettaaksesi signaalin pois
WaitOne() estää, kunnes signaali on olemassa, ja jos signaali on olemassa kutsun hetkellä WaitOnea, se ei estä
AutoResetEvent
Ero ManualResetEventiin on se, että AutoResetEvent.WaitOne() muuttaa automaattisesti tapahtumaobjektin tilaa, eli tapahtuman tila muuttuu aina, kun AutoResetEvent.WaitOne() suoritetaan. Signaali – > ei signaalia; Ei signaalia – > on signaali
example:


  
myResetEven.Set(), joka itse asiassa vastaa kytkintä, jos set()-metodia ei suoriteta, seuraava waitOne() ei pysty odottamaan ilmoitusta suorittaakseen sen, joten waitOne-lausetta ei suoriteta.
Monitorointimenetelmä
Wait() Pulse()-mekanismia käytetään säikeiden väliseen vuorovaikutukseen, ja kun objekti lähettää Monitor.Wait() -signaalin, säie, joka käyttää objektia, pysyy odotustilassa. kunnes se saa herätyssignaalin. Monitor.Pulse() lähetetään signaaleja odottavalle säikeelle.
Toisin sanoen, kriittisellä alueella Monitor.Enter():n ja Monitor.Exit():n välillä, jotta objektin lukitus vapautetaan ja nykyinen säike estetään, se on jonossa odotustilassa.

Lukko eroaa Mutexista
Lukitussynkronointi useiden säikeiden välillä
Useiden säikeiden synkronointi Mutex-prosessien välillä tai useiden prosessien synkronointi
.Net-monisäikeisessä ohjelmoinnissa käytetään usein AutoResetEvent- ja ManualResetEvent-luokkia, ja niiden käyttö on hyvin samankaltaista, mutta eroja on. Set-menetelmä siirtää signaalin lähetystilaan, Reset-menetelmä lähettää signaalin ei-lähetettyyn tilaan ja WaitOne odottaa signaalin lähettämistä. Konstruktorin alkuperäinen tila voidaan määrittää parametrin arvon perusteella, jos se on totta, se ei estä ja epätosi on estotila. Jos säie kutsuu WaitOne-metodia, säie saa signaalin ollessaan lähetystilassa ja jatkaa suoritustaan alaspäin. Erona on, että kutsun jälkeen AutoResetEvent.WaitOne() sallii vain yhden säikeen kerrallaan, ja kun säie saa signaalin, AutoResetEvent asettaa signaalin automaattisesti ei-lähetystilaan, ja muut WaitOnea kutsuvat säikeet voivat vain jatkaa odottamista. Toisin sanoen AutoResetEvent herättää vain yhden säikeen kerrallaan; ManualResetEvent voi herättää useita säikeitä, koska kun yksi säie kutsuu ManualResetEvent.Set()-metodia, muut säikeet, jotka kutsuvat WaitOnea, saavat signaalin jatkaa suoritusta, eikä ManualResetEvent automaattisesti aseta signaalia niin, ettei lähetä. Toisin sanoen, ellei ManualResetEvent.Reset()-metodia kutsuta manuaalisesti, ManualResetEvent pysyy signaalina ja ManualResetEvent voi herättää useita säikeitä samanaikaisesti jatkaakseen suoritusta.




Edellinen:.har-tiedoston jäsennystyökalu ja HARViewer
Seuraava:Zookeeperin hajautetun lukon toteutus
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com