race condition: wyścig

Sytuacja w programowaniu współbieżnym, w której jeden wątek zapisuje wartość zmodyfikowaną przez inny wątek ignorując tę modyfikację. Klasycznym przykładem przytaczanym w literaturze przedmiotu jest dokonywanie przelewów bankowych, które są operacjami podzielnymi.

Instrukcja ta może zostać wykonana w następujący sposób:

1. Załadowanie wartości do rejestru.
2. Zwiększenie wartości.
3. Zapisanie wyniku.

Wyobraźmy sobie teraz, że pierwszy z wątków wykonuje dwa pierwsze kroki i zostaje wywłaszczony. Następnie budzi się drugi wątek, który aktualizuje tę samą pozycję. Potem budzi się pierwszy wątek i kończy działanie, wykonując krok trzeci.
Ta czynność wymazuje zmiany dokonane przez drugi wątek, w wyniku czego zmienia się ogólna suma.

Podobał Ci się ten artykuł?

Oceń go!

Średnia 0 / 5. Liczba głosów: 0

Jeszcze nikt nie głosował. Wyprzedź innych i zagłosuj.

Skoro spodobał Ci się ten artykuł...

Poleć go znajomym!

Ojej :( Powiedz nam, co powinniśmy poprawić!

Jajko z dzwonkiem
Podoba Ci się ta strona?

Pomóż nam się rozwijać, wykupując płatne konto. Dzięki temu będziemy mogli tworzyć dla Ciebie jeszcze więcej ciekawych treści, a Ty pozbędziesz się reklam.

Dodaj komentarz

szesnaście − dwa =