![Race Conditions and How to Prevent Them - A Look at Dekker’s Algorithm](https://i.ytimg.com/vi/MqnpIwN7dz0/hqdefault.jpg)
Zawartość
- Definicja - Co oznacza algorytm Dekkersa?
- Wprowadzenie do Microsoft Azure i Microsoft Cloud | W tym przewodniku dowiesz się, na czym polega przetwarzanie w chmurze i jak Microsoft Azure może pomóc w migracji i prowadzeniu firmy z chmury.
- Techopedia wyjaśnia Algorytm Dekkersa
Definicja - Co oznacza algorytm Dekkersa?
Algorytm Dekkera jest pierwszym znanym algorytmem, który rozwiązuje problem wzajemnego wykluczenia w programowaniu współbieżnym. Jest przypisany do Th. J. Dekker, holenderski matematyk, który stworzył algorytm dla kolejnego oszustwa. Algorytm Dekkers jest używany w kolejce procesów i pozwala dwóm różnym wątkom na współużytkowanie tego samego zasobu jednorazowego użytku bez konfliktu przy użyciu pamięci współdzielonej do komunikacji.
Wprowadzenie do Microsoft Azure i Microsoft Cloud | W tym przewodniku dowiesz się, na czym polega przetwarzanie w chmurze i jak Microsoft Azure może pomóc w migracji i prowadzeniu firmy z chmury.
Techopedia wyjaśnia Algorytm Dekkersa
Algorytm Dekkera zezwoli tylko jednemu procesowi na użycie zasobu, jeśli dwa procesy próbują go użyć w tym samym czasie. Najważniejszym punktem algorytmu jest to, jak rozwiązuje ten problem. Udaje mu się zapobiec konfliktowi poprzez wymuszenie wzajemnego wykluczenia, co oznacza, że tylko jeden proces może korzystać z zasobu naraz i będzie czekać, czy inny proces go używa. Osiąga się to za pomocą dwóch „flag” i „tokena”. Flagi wskazują, czy proces chce wejść do sekcji krytycznej (CS), czy nie; wartość 1 oznacza PRAWDA, że proces chce wprowadzić CS, podczas gdy 0, lub FAŁSZ, oznacza odwrotnie. Token, który może również mieć wartość 1 lub 0, wskazuje priorytet, gdy oba procesy mają ustawione flagi na PRAWDA.Algorytm ten może skutecznie wymusić wzajemne wykluczenie, ale będzie stale sprawdzał, czy sekcja krytyczna jest dostępna, a zatem marnuje znaczny czas procesora. Powoduje to problem zwany synchronizacją blokowania, w którym każdy wątek może być wykonywany tylko przy ścisłej synchronizacji. Nie można go również rozszerzać, ponieważ obsługuje on maksymalnie dwa procesy wzajemnego wykluczenia.