Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 24412|Răspunde: 1

[Sursă] Diferența dintre ManualResetEvent și AutoResetEvent învățate prin firele C#

[Copiază linkul]
Postat pe 31.05.2018 14:59:47 | | | |
Să discutăm mai întâi despre ManualResetEvent și voi alterna câteva conținuturi AutoResetEvent în timpul discuției pentru a compara:

ManualResetEvent poate bloca unul sau mai multe fire până când este primit un semnal care îi spune ManualResetEvent să înceteze blocarea firului curent.

Informații despre ManualResetEvent

.net/c# Thread Suspend și Resume soluții învechite
https://www.itsvse.com/thread-4769-1-1.html
(Sursa: Architect_Programmer)


Imaginează-ți că obiectul ManualResetEvent are o proprietate de tip boolean, IsRelease, pentru a controla dacă blochează firul curent. Putem seta această proprietate la inițializare, cum ar fi ManualResetEvent event=new ManualResetEvent(false); Aceasta indică faptul că proprietatea implicită este de a bloca firul curent.

Exemplu de cod:



Observați aici o diferență importantă între ManualResetEvent și AutoResetEvent:

Manualul va trimite cu siguranță un semnal atât către Thread 1, cât și către Thread 2,Auto va trimite semnal doar aleatoriu către unul dintre ei.

De ce unul se numește manual și celălalt automat? Cred că aceasta este o întrebare pe care mulți o au și acum vom analiza această întrebare.

Doar now_manualResetEvent. Set(); Cred că toată lumea înțelege această propoziție, care poate fi considerată ca stabilind proprietatea IsRelease la true

_manualResetEvent.WaitOne(); Nu mai blochează firul 1 după ce primești un semnal. Valoarea IsRelease este adevărată pe tot parcursul procesului de după aceea.Dacă

Dacă vrei să returnezi valoarea IsRelease la false, trebuie să apelezi din nou metoda _manualResetEvent.Reset().

Dacă este _autoResetEvent.set(), atunci _autoResetEvent.WaitOne() va seta automat valoarea IsRelease pe false.

De aceea unul se numește automat, iar celălalt manual.



Cod de test:







Precedent:. Cea mai rapidă componentă de mapare a obiectelor OOM a .NET, Tiny Mapper, în practica proiectului
Următor:Explicație detaliată pentru depanarea depanării în C#
 Proprietarul| Postat pe 18.12.2024 20:30:44 |
Atât ManualResetEvent, cât și AutoResetEvent moștenesc de laEventWaitHandle, așa cum se arată în figura de mai jos:



Referință:Autentificarea cu hyperlink este vizibilă.

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com