![Race Conditions and How to Prevent Them - A Look at Dekker’s Algorithm](https://i.ytimg.com/vi/MqnpIwN7dz0/hqdefault.jpg)
Indhold
- Definition - Hvad betyder Dekkers algoritme?
- En introduktion til Microsoft Azure og Microsoft Cloud | Gennem denne vejledning lærer du, hvad cloud computing handler om, og hvordan Microsoft Azure kan hjælpe dig med at migrere og drive din virksomhed fra skyen.
- Techopedia forklarer Dekkers algoritme
Definition - Hvad betyder Dekkers algoritme?
Dekkers algoritme er den første kendte algoritme, der løser det gensidige ekskluderingsproblem i samtidig programmering. Det krediteres Th. J. Dekker, en hollandsk matematiker, der skabte algoritmen til en anden kon. Dekkers-algoritme bruges i processkø, og tillader to forskellige tråde at dele den samme engangsressource uden konflikt ved at bruge delt hukommelse til kommunikation.
En introduktion til Microsoft Azure og Microsoft Cloud | Gennem denne vejledning lærer du, hvad cloud computing handler om, og hvordan Microsoft Azure kan hjælpe dig med at migrere og drive din virksomhed fra skyen.
Techopedia forklarer Dekkers algoritme
Dekkers algoritme tillader kun en enkelt proces at bruge en ressource, hvis to processer forsøger at bruge den på samme tid. Højdepunktet i algoritmen er, hvordan den løser dette problem. Det lykkes at forhindre konflikten ved at håndhæve gensidig udelukkelse, hvilket betyder, at kun en proces må bruge ressourcen ad gangen og vil vente, hvis en anden proces bruger den. Dette opnås ved brug af to "flag" og et "token". Flagene angiver, om en proces ønsker at gå ind i det kritiske afsnit (CS) eller ej; en værdi på 1 betyder SAND, at processen vil indtaste CS, mens 0 eller FALSE betyder det modsatte. Token, der også kan have en værdi på 1 eller 0, angiver prioritet, når begge processer har deres flag sat til SAND.Denne algoritme kan med succes håndhæve gensidig udelukkelse, men vil konstant teste, om det kritiske afsnit er tilgængeligt og spilder derfor betydelig processortid. Det skaber problemet kendt som lockstep-synkronisering, hvor hver tråd kun kan udføres i streng synkronisering. Det kan også ikke udvides, da det kun understøtter maksimalt to processer til gensidig udstødelse.