Vzájemné vyloučení (anglicky mutual exclusion, nebo zkráceně mutex) je algoritmus používaný v programování jako synchronizační prostředek. Zabraňuje tomu, aby byly současně vykonávány dva (nebo více) kritické kódy nad stejným sdíleným prostředkem, jako například globální proměnné. Kritický kód je část kódu, ve které proces nebo vlákno přistupuje k veřejným prostředkům. Kritický kód není mechanismus ani algoritmus pro vzájemné vyloučení. Pokud jeden proces vstoupil do kritického kódu a nedokončil poslední instrukci (nevystoupil z kritického kódu), nemůže nad tímto prostředkem žádný jiný proces vstoupit do kritického kódu.
Mutex může nabývat dvou stavů: volný a vlastněný. K tomu udržuje dva druhy informace. Prvním je identifikátor procesu, který mutex drží. Druhým je počet uzamknutí. Počet uzamknutí je vyjádřen číslem, které aktualizuje operace lock (získání mutexu) nebo unlock (uvolnění mutexu). Cílem je zabránění více procesům držet daný mutex. Při vícenásobném uzamknutí musí být i stejný počet odemknutí.
Případy, jak proces získá mutex:
Případy uvolnění mutexu procesem:
Nesprávné použití mutexu může vést ke zpomalení procesů, kdy většinu času jsou zablokovány ze vzájemného čekání, nebo v horším případě k uváznutí dvou a více procesů. Jako řešení potom musí být alespoň jeden proces ukončen.