Co je Deadlock?
Zámek je stav, kdy program nemůže získat přístup ke zdroji, který potřebuje k pokračování. Když se aktivní aplikace dostane do slepé uličky, může „viset“ nebo přestat reagovat.
Zdroje, jako jsou uložená nebo uložená v mezipaměti data, mohou být uzamčeny, pokud k nim přistupuje konkrétní proces v rámci programu. Uzamčení dat zabraňuje předčasnému přepsání dat jinými procesy. Pokud proces nebo dotaz potřebuje přistoupit k uzamčeným datům, ale proces, který data uzamkl, je nechce pustit, může dojít k deadlocku.
Například následující situace způsobí deadlock mezi dvěma procesy:
* Proces 1 požaduje od procesu 2 prostředek B.
* Prostředek B je uzamčen, zatímco proces 2 běží.
* Proces 2 požaduje od procesu 1 prostředek A, aby mohl dokončit běh.
* Prostředek A je uzamčen, zatímco proces 1 běží.
Výsledkem je, že proces 1 a proces 2 čekají na dokončení toho druhého. Protože ani jeden z procesů nemůže pokračovat, dokud nedokončí ten druhý, vzniká mrtvý bod.
Vyhýbání se mrtvým bodům
Vývojáři mohou mrtvým bodům předcházet tím, že se ve své programovací logice vyhnou podmínkám uzamčení. Například místo toho, aby se dva procesy spoléhaly jeden na druhý, lze zdrojový kód napsat tak, aby každé vlákno skončilo dříve, než jiné vlákno bude potřebovat jeho prostředky. Tím, že programátoři zajistí, aby byla data dostupná v okamžiku, kdy jsou potřeba, mohou své aplikace ochránit před zavěšením nebo pádem.
POZNÁMKA:Závady mohou nastat také v případě, že jsou na jedné databázi spuštěny dva nebo více dotazů. Transakční databáze zamykají aktivní záznamy a brání tak jiným dotazům v přístupu k nim. Pokud proces nemůže přistupovat k uzamčenému záznamu, může dojít k zablokování databáze.
Definice Deadlock na této stránce je původní definice na SharTec.eu. Pokud chcete na tuto stránku odkázat, nezapomeňte uvést zdroj článku.
Cílem webu SharTec.eu je srozumitelně vysvětlit počítačovou terminologii. Snažíme se o jednoduchost a přesnost každé definice, kterou zveřejňujeme. Pokud máte připomínky k definici jazyka Slepá ulička nebo chcete navrhnout nový technický termín, kontaktujte nás.
Cieľom stránky SharTec.eu je vysvetľovať počítačovú terminológiu zrozumiteľným spôsobom. Pri každej uverejnenej definícii sa snažíme o jednoduchosť a presnosť. Ak máte pripomienky k definícii jazyka Slepá ulička alebo chcete navrhnúť nový technický termín, kontaktujte nás.