Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 17115|Atbildi: 0

[Paziņojums] Detalizēts skaidrojums par AutoResetEvent .net/c#

[Kopēt saiti]
Publicēts 20.03.2018 13:19:01 | | |

Ar pavedieniem saistītie jēdzieni
1. Pavedienu sinhronizācija
ManualResetEvent
Set() metode iestata stāvokli uz Signaled
Reset(), lai iestatītu to bez signāla
WaitOne() bloķēs, līdz tam būs signāls, un, ja WaitOne izsaukšanas brīdī būs signāls, tas netiks bloķēts
Automātiskā atiestatīšana
Atšķirība no ManualResetEvent ir tāda, ka AutoResetEvent.WaitOne() automātiski maina notikuma objekta stāvokli, tas ir, notikuma stāvoklis mainās katru reizi, kad tiek izpildīts AutoResetEvent.WaitOne(). Signāls - > nav signāla; Nav signāla – > ir signāls
example:


  
myResetEven.Set(), kas faktiski ir ekvivalents slēdzim, ja set() metode netiek izpildīta, nākamais waitOne() nevarēs gaidīt, kamēr paziņojums ļaus tam izpildīt, lai paziņojums pēc waitOne netiktu izpildīts.
Monitora metode
Wait() Pulse() mehānisms tiek izmantots starppavedienu mijiedarbībai, kad objekts izstaro Monitor.Wait(), pavediens, kas piekļūst objektam, paliks gaidīšanas stāvoklī. līdz brīdim, kad tiek saņemts modināšanas signāls. Monitor.Pulse() tiek izmantots, lai nosūtītu signālus uz gaidīšanas pavedienu.
Tas nozīmē, ka kritiskajā zonā starp Monitor.Enter() un Monitor.Exit(), lai atbrīvotu objekta bloķēšanu un bloķētu pašreizējo pavedienu, tas ir gaidīšanas stāvoklī rindā.

Lock atšķiras no Mutex
Sinhronizācijas bloķēšana starp vairākiem pavedieniem
Sinhronizācija vairāku pavedienu starp Mutex procesiem, vai sinhronizācija vairāku procesu
.Net daudzpavedienu programmēšanā bieži tiek izmantotas klases AutoResetEvent un ManualResetEvent, un to lietojums ir ļoti līdzīgs, taču pastāv atšķirības. Iestatīšanas metode nodod signālu nosūtīšanas stāvoklī, atiestatīšanas metode nodod signālu nesūtīšanas stāvoklī, un WaitOne gaida, kamēr signāls tiks nosūtīts. Konstruktora sākotnējo stāvokli var noteikt pēc parametra vērtības, ja tā ir taisnība, tā nav bloķējoša, un nepatiess ir bloķēšanas stāvoklis. Ja pavediens izsauc WaitOne metodi, pavediens saņem signālu, kad tas ir sūtīšanas stāvoklī un turpina izpildīt uz leju. Atšķirība ir tāda, ka pēc zvana AutoResetEvent.WaitOne() ļauj ievadīt tikai vienu pavedienu vienlaikus, un, kad pavediens saņem signālu, AutoResetEvent automātiski ievietos signālu bez sūtīšanas stāvokļa, un pārējie pavedieni, kas izsauc WaitOne, var tikai turpināt gaidīt. Tas nozīmē, ka AutoResetEvent vienlaikus pamodina tikai vienu pavedienu; ManualResetEvent var pamodināt vairākus pavedienus, jo, kad viens pavediens izsauc ManualResetEvent.Set() metodi, pārējie pavedieni, kas izsauc WaitOne, saņem signālu, lai turpinātu izpildi, un ManualResetEvent automātiski neiestata signālu nesūtīt. Citiem vārdiem sakot, ja vien ManualResetEvent.Reset() metode netiek izsaukta manuāli, ManualResetEvent paliks signalizēts un ManualResetEvent var pamodināt vairākus pavedienus vienlaikus, lai turpinātu izpildi.




Iepriekšējo:.har failu parsēšanas rīks un HARViewer
Nākamo:Zookeeper izkliedētās slēdzenes ieviešana
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com