Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 24412|Odgovoriti: 1

[Vir] Razlika med ManualResetEvent in AutoResetEvent, ki jo naučijo C# niti

[Kopiraj povezavo]
Objavljeno na 31. 05. 2018 14:59:47 | | | |
Najprej se pogovorimo o ManualResetEvent, med razpravo pa bom vmešal nekaj vsebine AutoResetEvent za primerjavo:

ManualResetEvent lahko blokira eno ali več niti, dokler ne prejmejo signala, ki ManualResetEventu naroči, naj preneha blokirati trenutno nit.

Informacije o ManualResetEvent

.net/c# Thread thread Suspend and Resume zastarele rešitve
https://www.itsvse.com/thread-4769-1-1.html
(Vir: Architect_Programmer)


Predstavljajte si, da ima objekt ManualResetEvent lastnost Boolean tipa, IsRelease, ki nadzoruje, ali blokirati trenutno nit. To lastnost lahko nastavimo ob inicializaciji, na primer ManualResetEvent event=new ManualResetEvent(false); To nakazuje, da je privzeta lastnost blokiranje trenutne niti.

Primer kode:



Opazite pomembno razliko med ManualResetEvent in AutoResetEvent:

Ročno bo zagotovo poslalo signal tako na nit 1 kot na nit 2,Avtomatski signal pošlje le enemu od njih naključno.

Zakaj se ena imenuje ročna, druga pa avtomatska? Mislim, da je to vprašanje, ki si ga zastavlja veliko ljudi, in zdaj si ga bomo ogledali.

Samo now_manualResetEvent. set(); Mislim, da vsi razumejo ta stavek, ki ga lahko razumemo kot nastavitev lastnosti IsRelease na resnično

_manualResetEvent.WaitOne(); Nit 1 po prejemu signala ne blokira več. Vrednost IsRelease je resnična skozi celoten proces po tem.Če

Če želite vrniti vrednost IsRelease na false, morate ponovno poklicati metodo _manualResetEvent.Reset().

Če je _autoResetEvent.set(), bo _autoResetEvent.WaitOne() samodejno nastavil vrednost IsRelease na false.

Zato se ena imenuje avtomatska, druga pa ročna.



Testna koda:







Prejšnji:. .NET-ova najhitrejša komponenta za preslikavo objektov v OOM, Tiny Mapper, v projektni praksi
Naslednji:C# DEBUG debug informacije, tiskanje in izhod, podrobna razlaga
 Najemodajalec| Objavljeno na 18. 12. 2024 20:30:44 |
Tako ManualResetEvent kot AutoResetEvent dedujeta odEventWaitHandle, kot je prikazano na spodnji sliki:



Referenčni:Prijava do hiperpovezave je vidna.

Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com