Obsah:
Definícia - Čo znamená vzájomné vylúčenie (Mutex)?
Vzájomné vylúčenie (mutex) je programový objekt, ktorý bráni súčasnému prístupu k zdieľanému prostriedku. Tento koncept sa používa v súbežnom programovaní s kritickou časťou, časťou kódu, v ktorej procesy alebo vlákna pristupujú k zdieľanému prostriedku. Naraz vlastní mutex iba jedno vlákno, takže pri spustení programu sa vytvorí mutex s jedinečným názvom. Ak vlákno obsahuje prostriedok, musí zamknúť mutex z iných vlákien, aby sa zabránilo súbežnému prístupu k prostriedku. Po uvoľnení prostriedku vlákno odomkne mutex.
Techopedia vysvetľuje vzájomné vylúčenie (Mutex)
Mutex prichádza na obrázok, keď dve vlákna pracujú na rovnakých údajoch súčasne. Pôsobí ako zámok a je najzákladnejším synchronizačným nástrojom. Keď sa vlákno pokúša získať mutex, získa mutex, ak je k dispozícii, inak je vlákno nastavené do režimu spánku. Vzájomné vylúčenie znižuje latenciu a čakanie pomocou prepínačov vo frontách a kontextových prepínačov. Mutex je možné vynútiť na úrovni hardvéru aj softvéru.
Zakázanie prerušení pre najmenší počet inštrukcií je najlepším spôsobom, ako vynútiť mutex na úrovni jadra a zabrániť korupcii štruktúr zdieľaných údajov. Ak rovnakú pamäť zdieľa viacero procesorov, nastaví sa príznak na povolenie a zakázanie získavania prostriedkov na základe dostupnosti. Mechanizmus obsadenia čaká na vynútenie mutexu v softvérových oblastiach. Toto je vybavené algoritmami, ako je Dekkerov algoritmus, čiernobiely pekársky algoritmus, Szymanského algoritmus, Petersonov algoritmus a Lamportov pekársky algoritmus.
Pre efektívnu implementáciu mutexu je možné definovať vzájomne sa vylučujúce čítačky a kódy triedy mutex.