Obsah:
Definícia - Čo znamená Dekkerov algoritmus?
Dekkerov algoritmus je prvý známy algoritmus, ktorý rieši problém vzájomného vylúčenia pri súčasnom programovaní. Je pripísaná Th. J. Dekker, holandský matematik, ktorý vytvoril algoritmus pre iný kontext. Dekkerov algoritmus sa používa vo fronte procesov a umožňuje dvom rôznym vláknam zdieľať ten istý prostriedok na jedno použitie bez konfliktov pomocou zdieľanej pamäte na komunikáciu.
Techopedia vysvetľuje Dekkerov algoritmus
Dekkerov algoritmus umožní použitie prostriedku iba v jednom procese, ak sa dva procesy pokúšajú použiť súčasne. Vrcholom algoritmu je spôsob riešenia tohto problému. Podarí sa mu zabrániť konfliktu vynútením vzájomného vylúčenia, čo znamená, že prostriedok môže súčasne používať iba jeden proces a bude čakať, ak ho použije iný proces. Dosahuje sa to použitím dvoch „príznakov“ a „tokenu“. Tieto príznaky označujú, či proces chce vstúpiť do kritickej časti (CS) alebo nie; hodnota 1 znamená PRAVDA, že proces chce vstúpiť do CS, zatiaľ čo 0 alebo FALSE znamená opak. Token, ktorý môže mať aj hodnotu 1 alebo 0, označuje prioritu, keď majú oba procesy svoje príznaky nastavené na PRAVDA.
Tento algoritmus môže úspešne vynútiť vzájomné vylúčenie, ale bude neustále testovať, či je kritická časť k dispozícii, a preto stráca značný čas procesora. Vytvára problém známy ako synchronizácia blokovania synchronizácie, pri ktorom môže každé vlákno vykonávať iba pri prísnej synchronizácii. Je tiež nerozširovateľný, pretože podporuje iba dva procesy vzájomného vylúčenia.