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

Vaade: 17115|Vastuse: 0

[Kommunikatsioon] AutoResetEventi üksikasjalik selgitus aadressil .net/c#

[Kopeeri link]
Postitatud 20.03.2018 13:19:01 | | |

Niidiga seotud mõisted
1. Lõimede sünkroniseerimine
ManualResetEvent
Set() meetod seab olekuks Signaled
Reset(), et seadistada signaali puudumine
WaitOne() blokeerib signaali seni, kuni signaal on olemas, ja kui signaal on olemas WaitOne'i kutsumise ajal, siis see ei blokeeri
AutoResetEvent
Erinevus ManualResetEventist seisneb selles, et AutoResetEvent.WaitOne() muudab automaatselt sündmuse objekti olekut, st sündmuse seisund muutub iga kord, kui AutoResetEvent.WaitOne() käivitatakse. Signaal – > signaali pole; Signaali puudub – > on signaal
example:


  
myResetEven.Set(), mis on tegelikult lülitiga ekvivalentne, kui set() meetodit ei käivitata, ei saa järgmine waitOne() oodata teavitust, et see käivitataks, nii et waitOne'i järgne lause ei täitu.
Monitori meetod
Wait() Pulse() mehhanismi kasutatakse lõimedevaheliseks interaktsiooniks, kui objekt kiirgab Monitor.Wait(), jääb niit, mis objektile ligi pääseb, ooteolekusse. kuni ta saab äratussignaali. Monitor.Pulse() kasutatakse signaalide saatmiseks ootelõimele.
See tähendab, et kriitilises piirkonnas Monitor.Enter() ja Monitor.Exit() vahel, et vabastada objekti lukk ja blokeerida praegune lõim, on see järjekorras ooterežiimis.

Lukustus erineb Mutexist
Luku sünkroniseerimine mitme lõime vahel
Mitme lõime sünkroniseerimine Mutex-protsesside vahel või mitme protsessi sünkroniseerimine
.Net mitmelõimelise programmeerimise puhul kasutatakse sageli AutoResetEvent ja ManualResetEvent klasse ning nende kasutus on väga sarnane, kuid erinevusi esineb. Set-meetod viib signaali saatmisolekusse, Reset meetod suunab signaali mitte-saatmisolekusse ja WaitOne ootab signaali saatmist. Konstruktori algoleku saab määrata parameetri väärtuse järgi, kui see on tõene, siis see ei blokeeri ja vale on blokeeriv olek. Kui lõim kutsub WaitOne meetodit, saab lõim signaali saatmisolekus ja jätkab allapoole täitmist. Erinevus seisneb selles, et pärast kõnet lubab AutoResetEvent.WaitOne() korraga siseneda ainult ühel lõimel ning kui lõim saab signaali, paneb AutoResetEvent automaatselt signaali saatmata olekusse ning teised WaitOne'i kutsuvad lõimed saavad ainult edasi oodata. See tähendab, et AutoResetEvent äratab korraga ainult ühe lõime; ManualResetEvent võib äratada mitu lõime, sest kui üks lõim kutsub ManualResetEvent.Set() meetodit, saavad teised WaitOne'i kutsuvad lõimed signaali täitmise jätkamiseks ning ManualResetEvent ei sea automaatselt signaali mitte saatmiseks. Teisisõnu, kui ManualResetEvent.Reset() meetodit ei kutsuta käsitsi, jääb ManualResetEvent signaaliks ja ManualResetEvent saab korraga äratada mitu lõime, et jätkata täitmist.




Eelmine:.har faili parsing tool ja HARViewer
Järgmine:Zookeeperi hajutatud luku rakendus
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