Lamportův algoritmus je permission-based synchronizační algoritmus pro distribuované vzájemné vyloučení, který využívá logické hodiny k vytvoření totálního uspořádání žádostí. Vedlejší efekt totálního uspořádání je totiž vzájemné vyloučení.


Je to předchůdce Ricart-Agrawaly. Je to první algoritmus, který ukázal, jak využít logické hodiny pro úplnou synchronizaci.

[!note] Lamportův algoritmus se dnes nepoužívá kvůli velkému počtu zpráv, ale je to perfektní edukativní příklad, jak fungují logické hodiny v praxi. Ukazuje, že pokud máme Totální uspořádání zpráv, máme i triviální vzájemné vyloučení.


Princip

Lamportův algoritmus garantuje vstup do kritické sekce (CS) přesně v tom pořadí, v jakém vznikly požadavky (podle logického času). Je tedy spravedlivý (FIFO).

Předpoklady

Algoritmus

  1. Žádost (request):
  2. Rozhodnutí (decision): Proces $P_i$​ vstoupí do CS, pokud platí obě podmínky:
  3. Uvolnění (Release):