V informatice je zámek synchronizační mechanismus , který umožňuje exkluzivní přístup ke sdílenému prostředku mezi více vlákny . Zámky jsou jedním ze způsobů, jak vynutit politiku řízení souběžnosti .
V zásadě se používá měkký zámek , který předpokládá, že se každé vlákno pokusí získat zámek před přístupem k odpovídajícímu sdílenému prostředku. Některé systémy poskytují povinný zamykací mechanismus , při jehož použití bude pokus o neoprávněný přístup k uzamčenému zdroji přerušen vyvoláním výjimky na vlákno, které se pokusilo získat přístup.
Semafor je nejjednodušší typ zámku. Z hlediska přístupu k datům se nerozlišuje mezi režimy přístupu: sdílený (pouze pro čtení) nebo výhradní (čtení-zápis). Ve sdíleném režimu může více vláken požadovat zámek pro přístup k datům v režimu pouze pro čtení. Režim výhradního přístupu se také používá v algoritmech aktualizace a mazání.
Typy zámků se vyznačují strategií blokování pokračování provádění vlákna. Ve většině implementací požadavek na zámek brání vláknu v pokračování ve vykonávání, dokud nebude uzamčený prostředek k dispozici.
Spinlock je zámek, který ve smyčce čeká na udělení přístupu. Takový zámek je velmi účinný, pokud vlákno čeká na uzamčení malou dobu, čímž se vyhnete nadměrnému přeplánování vláken. Náklady na čekání na přístup budou značné, pokud jedno z vláken drží zámek po dlouhou dobu.
Pro efektivní implementaci uzamykacího mechanismu je nutná podpora na úrovni hardwaru. Hardwarová podpora může být implementována jako jedna nebo více atomických operací , jako je „ test-and-set “, „ fetch-and-add “ nebo „ porovnat a vyměnit “. Takové pokyny umožňují bez přerušení zkontrolovat, zda je zámek volný, a pokud ano, získat zámek.
Na jednoprocesorových systémech je možné provádět instrukce bez hardwarových přerušení pomocí speciálních instrukcí nebo instrukčních prefixů, které dočasně zablokují přerušení, ale tento přístup nefunguje na víceprocesorových systémech se sdílenou pamětí. Plná podpora zámků ve víceprocesorovém prostředí může vyžadovat poměrně složitou hardwarovou a softwarovou podporu se značnými problémy s načasováním .