Hlídané zavěšení - Guarded suspension
![]() | tento článek potřebuje další citace pro ověření.Prosinec 2010) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v souběžné programování, hlídané zavěšení[1] je vzor návrhu softwaru pro správu operací, které vyžadují a zámek být získán a předpoklad před provedením operace. Chráněný vzor zavěšení se obvykle používá na volání metod v objektově orientovaných programech a zahrnuje pozastavení volání metody a volajícího vlákna, dokud není splněna podmínka (funguje jako hlídat ) je spokojen.
Používání
Protože to je blokování, chráněný vzor pozastavení se obecně používá pouze tehdy, když vývojář ví, že volání metody bude pozastaveno na konečnou a přiměřenou dobu. Pokud je volání metody pozastaveno na příliš dlouho, pak se celkový program zpomalí nebo zastaví a čeká na splnění předběžné podmínky. Pokud vývojář ví, že pozastavení volání metody bude na dobu neurčitou nebo nepřijatelně dlouhou dobu, pak zarážející vzor může být výhodné.
Implementace
V Javě třída Object poskytuje Počkejte()
a oznámit()
metody na pomoc s hlídaným zavěšením. V implementaci níže, původně nalezené v Kuchana (2004), pokud není splněn žádný předpoklad pro úspěšné volání metody, pak metoda počká, až konečně vstoupí do platného stavu.
veřejnost třída Příklad { synchronizované prázdnota hlídaná metoda() { zatímco (!předpoklad()) { Snaž se { // Pokračujte v čekání Počkejte(); // … } chytit (Přerušená výjimka E) { // … } } // Skutečná implementace úkolu } synchronizované prázdnota alterObjectStateMethod() { // Změnit stav objektu // … // Informovat čekající vlákna oznámit(); }}
Příkladem skutečné implementace by byl objekt fronty s a dostat
metoda, která má stráž pro detekci, když ve frontě nejsou žádné položky. Jednou dát
metoda upozorní ostatní metody (například a dostat
metoda), pak dostat
metoda může opustit hlídaný stav a pokračovat v hovoru. Jakmile je fronta prázdná, pak dostat
metoda znovu vstoupí do stráženého stavu.
Viz také
- Balkánek vzor je alternativní vzor pro řešení předběžné podmínky
- Hlídaný velitelský jazyk zahrnuje podobný jazykový konstrukt
- Zámek čtenářů a spisovatelů
Poznámky
- ^ Lea, Doug (2000). Souběžné programování v prostředí Java Second Edition. Reading, MA: Addison-Wesley. ISBN 0-201-31009-0.
Reference
- Kuchana, Partha (2004). "Softwarová architektura návrhové vzory v Javě". Boca Raton, Florida: Auerbach Publications. Citovat deník vyžaduje
| deník =
(Pomoc)CS1 maint: ref = harv (odkaz).
![]() | Tento počítačová věda článek je a pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |