Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 24412|Odpoveď: 1

[Zdroj] Rozdiel medzi ManualResetEvent a AutoResetEvent, ktorý sa naučili C# vlákna

[Kopírovať odkaz]
Zverejnené 31. 5. 2018 14:59:47 | | | |
Najskôr sa pozrime na ManualResetEvent a počas diskusie vložím aj časť obsahu AutoResetEvent, aby som porovnal:

ManualResetEvent môže blokovať jedno alebo viac vlákien, kým nie je prijatý signál, ktorý ManualResetEvent naznačí, aby prestal blokovať aktuálne vlákno.

Informácie o ManualResetEvent

.net/c# Thread Suspend and Resume zastarané riešenia
https://www.itsvse.com/thread-4769-1-1.html
(Zdroj: Architect_Programmer)


Predstavte si, že objekt ManualResetEvent má vlastnosť Booleovského typu, IsRelease, ktorá ovláda, či má zablokovať aktuálne vlákno. Túto vlastnosť môžeme nastaviť pri inicializácii, napríklad ManualResetEvent event=new ManualResetEvent(false); To naznačuje, že predvolenou vlastnosťou je blokovať aktuálne vlákno.

Príklad kódu:



Všimnite si dôležitý rozdiel medzi ManualResetEvent a AutoResetEvent:

Manuál určite pošle signál na vlákno 1 aj vlákno 2,Auto pošle signál len jednému z nich náhodne.

Prečo sa jedna volá manuálna a druhá automatická? Myslím, že toto je otázka, ktorú má veľa ľudí, a teraz sa na ňu pozrieme.

Len now_manualResetEvent. set(); Myslím, že každý rozumie tejto vete, ktorú možno považovať za nastavenie vlastnosti IsRelease na pravdivé

_manualResetEvent.WaitOne(); Vlákno 1 už neblokuje po prijatí signálu. Hodnota IsRelease je pravdivá počas celého procesu potom.Ak

Ak chcete vrátiť hodnotu IsRelease na false, musíte znova zavolať metódu _manualResetEvent.Reset().

Ak je to _autoResetEvent.set(), potom _autoResetEvent.WaitOne() automaticky nastaví hodnotu IsRelease na false.

Preto sa jeden volá automatický a druhý manuálny.



Testovací kód:







Predchádzajúci:. Najrýchlejšia komponenta na mapovanie objektov v OOM v .NET, Tiny Mapper, v projektovej praxi
Budúci:C# DEBUG debug informácie o tlači a výstupe – podrobné vysvetlenie
 Prenajímateľ| Zverejnené 18. 12. 2024 20:30:44 |
Obe funkcie ManualResetEvent aj AutoResetEvent dedia zEventWaitHandle, ako je znázornené na obrázku nižšie:



Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com