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

Näkymä: 24412|Vastaus: 1

[Lähde] Ero ManualResetEventin ja AutoResetEventin välillä oppii C#-säikeistä

[Kopioi linkki]
Julkaistu 31.5.2018 14.59.47 | | | |
Keskustellaan ensin ManualResetEventistä, ja lisään keskustelun aikana AutoResetEvent-sisältöä vertaillakseni:

ManualResetEvent voi estää yhden tai useamman säikeen, kunnes vastaanotetaan signaali, joka kehottaa ManualResetEventiä lopettamaan nykyisen säikeen estämisen.

Tietoa ManualResetEventistä

.net/c# Ketjuketju Keskeytä ja jatka vanhentuneita ratkaisuja
https://www.itsvse.com/thread-4769-1-1.html
(Lähde: Architect_Programmer)


Kuvittele, että ManualResetEvent-oliolla on Boole-tyyppinen ominaisuus, IsRelease, joka voi hallita, estääkö nykyinen säie. Voimme asettaa tämän ominaisuuden alustuksen yhteydessä, kuten ManualResetEvent event=new ManualResetEvent(false); Tämä tarkoittaa, että oletusominaisuus on estää nykyinen säie.

Koodiesimerkki:



Huomaa tärkeä ero ManualResetEventin ja AutoResetEventin välillä tässä:

Manuaali lähettää varmasti signaalin sekä säikeelle 1 että säie 2:lle,Auto lähettää signaalin vain yhdelle niistä satunnaisesti.

Miksi toista kutsutaan manuaaliksi ja toista automaattiseksi? Uskon, että tämä on monien kysymys, ja nyt tarkastelemme sitä.

Vain now_manualResetEvent. Set(); Uskon, että kaikki ymmärtävät tämän lauseen, jota voidaan pitää IsReleasen ominaisuuden asettamisena todeksi

_manualResetEvent.WaitOne(); Säie 1 ei enää estä signaalin vastaanottamisen jälkeen. IsReleasen arvo näkyy koko sen jälkeisen prosessin ajan.Jos

Jos haluat palauttaa IsRelease-arvon vääräksi, sinun täytyy kutsua _manualResetEvent.Reset()-menetelmää uudelleen.

Jos se on _autoResetEvent.set(), niin _autoResetEvent.WaitOne() asettaa automaattisesti IsRelease-arvon vääräksi.

Siksi toinen on automaattinen ja toinen manuaalinen.



Testikoodi:







Edellinen:. .NETin nopein OOM-objektikartoituskomponentti, Tiny Mapper, projektikäytännössä
Seuraava:C# DEBUG debug-tiedon tulostus ja tulostus yksityiskohtainen selitys
 Vuokraisäntä| Julkaistu 18.12.2024 20.30.44 |
Sekä ManualResetEvent että AutoResetEvent perivätEventWaitHandle, kuten alla olevassa kuvassa näkyy:



Viittaus:Hyperlinkin kirjautuminen on näkyvissä.

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