Mutex vs. událost
V C # existuje mnoho různých možností synchronizace vláken. Dva více široce použitý být mutex a událost. Jaký je přesně rozdíl mezi těmito dvěma? Která z nich je lepší volbou?
Možnost události je schopna dát podprocesům možnost blokovat, dokud není událost vysílána, tedy název „událost“. Je to stejné, jako když něco spíte a probudíte se, jen když se stane něco významného. Události jsou na rozdíl od mutexů, protože mutexy nemají možnost nebo funkci signalizace. Události jsou schopny vymazat signál, jakmile se někdo, kdo na něj mohl čekat, probudil. I API jsou schopna povolit blokování, dokud není signalizována jedna nebo všechny různé události. Události jsou navíc objekty jádra. Ve srovnání s mutexy nejsou „lehčí“. Událost je v podstatě objekt jádra se dvěma stavy. Událost obvykle signalizuje příchod události a někdy i konec I / O operace.
„Mutex“ znamená vzájemné vyloučení. Jedná se o formu koordinovaného koordinačního mechanismu pro sdílené zdroje. Ber to jako formu transakce. Nemusíte čekat, i když chcete získat přístup k několika sdíleným prostředkům (pouze v případě, že k nim již přistupují jiní), které blokujete. Mutex se skládá ze dvou stavů, i když existuje k provedení vzájemného vyloučení. To je pro případ, kdy chcete chránit úsek kódu, který obvykle aktualizuje sdílený prostředek, od části, ve které je mutex nárokován, na část, ve které bude vydán. To vede ke skutečnosti, že žádné jiné vlákno nemůže projít sekcí.
Lidé, kteří se pokusili simulovat událost pomocí mutexu, se museli potýkat s problémem, kdy jakmile je zámek uznán nebo byla událost signalizována, osoba udržuje všechny ostatní ven až do uvolnění zámku. Toto není sémantika signalizované události. Událost může zůstat zveřejněna a pro všechny testování podprocesů v případě, která nemá žádné zámky, bude k dispozici forma brány. Mutex zavázaný k synchronizaci meziprocesů je v objektu režimu jádra. Události vytvořené pro vícevláknovou synchronizaci podle jedné metody jsou v objektu uživatelského režimu.
Mutexový objekt je příliš těžký a příliš obecný. Objekty událostí jsou mnohem lehčí. Synchronizace v uživatelském režimu se používá ve většině situací z důvodu, že dává méně cyklů CPU. Mutex je velmi podobný kritické sekci a používá se k synchronizaci přístupu ke sdíleným prostředkům. Události mají zcela jinou funkci, protože se používají k synchronizaci úkolů nebo ke správě plánování úkolů pro některé lidi.
Události jsou spíše proměnnou podmínek, na rozdíl od Mutexu, který je spíše jako
sledovat v některé z terminologie, nebo to může být tradiční forma semaforu / mutexu.
Souhrn:
1.Možnost události je schopna dát vláknům možnost blokovat, dokud není událost vysílána, tedy název „událost“.
2.An událost je v podstatě objekt jádra, který má dva stavy. Událost obvykle signalizuje příchod události a někdy i konec I / O operace.
3. „Mutex“ znamená vzájemné vyloučení. Jedná se o formu koordinovaného koordinačního mechanismu pro sdílené zdroje.
4.Mutex, který se zavázal k synchronizaci mezi procesy, je v objektu režimu jádra. Události vytvořené pro vícevláknovou synchronizaci podle jedné metody jsou v objektu uživatelského režimu.
5.Eents jsou spíše proměnnou podmínek, na rozdíl od Mutexu, který je spíše jako
sledovat v některé z terminologie, nebo to může být tradiční forma semaforu / mutexu.