Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Tu je porucha:
* exkluzivita: Definujúca charakteristika. Iba jedna entita dokáže zadržať zámok naraz.
* Blokovanie: Vlákna, ktoré sa pokúšajú získať zámok, keď je už držaný, sú blokované (vložené do spánku) a nebudú pokračovať, kým nebude k dispozícii zámok.
* Prípady použitia: Exkluzívne zámky sú nevyhnutné, ak operácie na zdieľanom zdroji musia byť atómové (nepretržité), aby sa udržala konzistentnosť údajov. To je rozhodujúce v scenároch, ako je aktualizácia databázového záznamu, úpravy súboru alebo prístup k umiestneniu zdieľanej pamäte. Ak by viac vlákien súčasne upravilo rovnaké údaje bez exkluzívneho uzamknutia, výsledné údaje by boli nepredvídateľné a pravdepodobne poškodené.
Kontrast so zdieľanými zámkami:
Exkluzívne zámky sa líšia od zdieľaných zámkov (čítanie zámkov). Zdieľané zámky umožňujú viac vlákien * čítať * zdieľaný zdroj súbežne, ale bránia akémukoľvek vláknutiu zapisovať do zdroja, kým sa neuvoľnia všetky zdieľané zámky.
Implementácia:
Exkluzívne zámky sa implementujú pomocou rôznych synchronizačných primitívov v závislosti od programovacieho jazyka a prostredia. Príklady zahŕňajú:
* mutexes (vzájomné vylúčenie): Spoločná implementácia v mnohých operačných systémoch a programovacích jazykoch.
* semafory: Môže sa použiť na implementáciu exkluzívnych zámkov, hoci ponúkajú všeobecnejšie synchronizačné schopnosti.
* monitory: Konštrukty na vyššej úrovni, ktoré zapuzdrujú zdieľané zdroje a synchronizačné mechanizmy.
Príklad (koncepčný):
Predstavte si bankový účet. Ak sa viac vlákien pokúsilo súčasne vyberať peniaze bez exkluzívneho zámku, konečný zostatok by mohol byť nesprávny. Exkluzívny zámok na účte zaisťuje, že súčasne sa vyskytne iba jedna operácia výberu, čím sa zabránilo podmienkam pretekov a korupcii údajov.