See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 24412|Vastuse: 1

[Allikas] ManualResetEventi ja AutoResetEventi, mida õpivad C# lõimed

[Kopeeri link]
Postitatud 31.05.2018 14:59:47 | | | |
Räägime esmalt ManualResetEventist ja ma põimin arutelu käigus AutoResetEventi sisu, et võrrelda:

ManualResetEvent võib blokeerida ühe või mitu lõime, kuni saabub signaal, mis ütleb ManualResetEventile, et ta lõpetaks praeguse lõime blokeerimise.

Teave ManualResetEventi kohta

.net/c# Lõime Peata ja jätka aegunud lahendusi
https://www.itsvse.com/thread-4769-1-1.html
(Allikas: Architect_Programmer)


Kujutage ette, et ManualResetEvent objektil on Boole'i tüüpi omadus IsRelease, mis kontrollib, kas praegune lõim blokeeritakse. Seda omadust saab inisialiseerimisel seadistada, näiteks ManualResetEvent event=new ManualResetEvent(false); See näitab, et vaikimisi omadus on blokeerida praegune lõim.

Koodinäide:



Pane tähele olulist erinevust ManualResetEventi ja AutoResetEventi vahel siin:

Käsiraamat saadab kindlasti signaali nii lõime 1 kui ka keerme 2 suunas,Auto saadab signaali juhuslikult ainult ühele neist.

Miks nimetatakse ühte manuaaliks ja teist automaatseks? Ma arvan, et see on küsimus, mis paljudel inimestel on, ja nüüd vaatame seda küsimust.

Lihtsalt now_manualResetEvent. Set(); Ma arvan, et kõik mõistavad seda lauset, mida võib pidada IsRelease'i omaduse tõeks seadmiseks

_manualResetEvent.WaitOne(); Ei blokeeri enam lõime 1 pärast signaali saamist. IsRelease'i väärtus kehtib kogu pärast seda protsessi vältel.Kui

Kui soovid IsRelease'i väärtuse false väärtusele tagasi tuua, pead uuesti kutsuma _manualResetEvent.Reset() meetodi.

Kui see on _autoResetEvent.set(), siis määrab _autoResetEvent.WaitOne() automaatselt IsRelease'i väärtuseks false väärtuse.

Seetõttu nimetatakse ühte automaatseks ja teist manuaalseks.



Testkood:







Eelmine:. .NET-i kiireim OOM objektide kaardistamise komponent, Tiny Mapper, projektipraktikas
Järgmine:C# DEBUG silumisinfo trükkimine ja väljund üksikasjalik selgitus
 Üürileandja| Postitatud 18.12.2024 20:30:44 |
Nii ManualResetEvent kui ka AutoResetEvent pärivadEventWaitHandle, nagu alloleval joonisel näidatud:



Viide:Hüperlingi sisselogimine on nähtav.

Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com