Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 24412|Odpověď: 1

[Zdroj] Rozdíl mezi ManualResetEvent a AutoResetEvent, který se naučily C# vlákna

[Kopírovat odkaz]
Zveřejněno 31.05.2018 14:59:47 | | | |
Nejprve si pojďme probrat ManualResetEvent a během diskuse vložím nějaký obsah AutoResetEvent, abychom porovnali:

ManualResetEvent může blokovat jedno nebo více vláken, dokud není přijat signál, který ManualResetEvent vyzývá, aby přestal blokovat aktuální vlákno.

Informace o ManualResetEvent

.net/c# Thread Suspend and Resume zastaralá řešení
https://www.itsvse.com/thread-4769-1-1.html
(Zdroj: Architect_Programmer)


Představte si, že objekt ManualResetEvent má vlastnost Booleovského typu, IsRelease, která řídí, zda má aktuální vlákno zablokovat. Tuto vlastnost můžeme nastavit při inicializaci, například ManualResetEvent event=new ManualResetEvent(false); To naznačuje, že výchozí vlastností je blokovat aktuální vlákno.

Příklad kódu:



Všimněte si důležitého rozdílu mezi ManualResetEvent a AutoResetEvent:

Manuál určitě pošle signál jak do vlákna 1, tak do vlákna 2,Automatické vysílání pošle signál jen jednomu z nich náhodně.

Proč se jeden jmenuje manuální a druhý automatický? Myslím, že je to otázka, kterou má mnoho lidí, a teď se na ni podíváme.

Jen now_manualResetEvent. set(); Myslím, že každý chápe tuto větu, kterou lze považovat za nastavení vlastnosti IsRelease na pravdivou

_manualResetEvent.WaitOne(); Vlákno 1 už neblokuje po přijetí signálu. Hodnota IsRelease je pravdivá po celý proces poté.Když

Pokud chcete vrátit hodnotu IsRelease na false, musíte znovu zavolat metodu _manualResetEvent.Reset().

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

Proto se jedna jmenuje automatická a druhá manuální.



Testovací kód:







Předchozí:. Nejrychlejší komponenta pro mapování objektů v OOM v .NET, Tiny Mapper, v projektové praxi
Další:Tisk a výstup DEBUG informací o ladění v C# a výstup – podrobné vysvětlení
 Pronajímatel| Zveřejněno 18.12.2024 20:30:44 |
Jak ManualResetEvent, tak AutoResetEvent dědí zEventWaitHandle, jak je znázorněno na obrázku níže:



Odkaz:Přihlášení k hypertextovému odkazu je viditelné.

Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com