Próbuję poprawić rozumienie barier pamięci. Załóżmy, że mamy słaby model pamięci i dostosowujemy Dekker's algorithm. Czy jest możliwe, aby działał poprawnie pod słabym modelem pamięci, dodając bariery pamięci?Bariery pamięci a operacje blokowane
Myślę, że odpowiedź jest zaskakująca. Powodem (jeśli mam rację) jest to, że chociaż można wykorzystać barierę pamięci, aby upewnić się, że odczyt nie zostanie przeniesiony obok innej, to nie może zagwarantować, że odczyt nie będzie zawierał nieaktualnych danych (takich jak w pamięci podręcznej). W ten sposób mógł minąć jakiś czas w przeszłości, gdy sekcja krytyczna została odblokowana (na pamięć podręczną procesora), ale w chwili obecnej inne procesory mogą ją zablokować. Jeśli moje zrozumienie jest poprawne, należy użyć powiązanych ze sobą operacji, takich jak te, które są zwykle nazywane testowaniem i zestawieniem lub porównywaniem i zamianą, aby zapewnić zsynchronizowaną zgodność wartości w lokalizacji pamięci między wieloma procesorami.
Czy możemy zatem słusznie oczekiwać, że system słabego modelu pamięci nie zapewni tylko barier pamięci? System musi dostarczać operacje, takie jak testowanie i zestawianie lub porównywanie i zamiana, aby były użyteczne.
Zdaję sobie sprawę, że popularne procesory, w tym procesor x86, zapewniają modele pamięci o wiele mocniejsze niż słabe modele pamięci. Proszę skupić się na dyskusji na temat słabych modeli pamięci.
(Jeśli algorytm dekkera jest złym wyborem, wybierz inny algorytm wzajemnego wykluczania gdzie bariera pamięci może z powodzeniem osiągnąć prawidłową synchronizację, jeśli to możliwe).
AFAICT, dla Dekkera, nie wystarczy wiedzieć, że flaga była wolna od pewnego czasu w przeszłości, ale raczej, że teraz bezpiecznie jest wejść do krytycznej sekcji. Wygląda na to, że potrzebuję aktualnej wartości i nie rozumiem, jak sobie z tym radzisz z barierami pamięci (jak mówisz w pierwszym zdaniu). –
Po prostu potrzebujesz silniejszej bariery niż ta, którą właśnie pokazałem - "pełne ogrodzenie". Zaktualizuję moją odpowiedź, aby później pokazać Dekkerowi bariery. –