Warunek wyścigu

Warunek wyścigu występuje, gdy działanie programu programu zależy od czasu wykonania co najmniej jednego procesu. Jeśli wątek zostanie uruchomiony lub zakończy działanie w nieoczekiwanym momencie, może to spowodować nieprzewidywalne zachowanie, takie jak nieprawidłowy wynik lub zakleszczenie programu.

Większość programów jest wielowątkowa, co oznacza, że może przetwarzać kilka wątków jednocześnie. Dobrze zaprogramowana aplikacja zapewnia, że wyniki poszczególnych wątków są przetwarzane w oczekiwanej kolejności. Jeśli program opiera się na wątkach działających w nieprzewidywalnej kolejności, może wystąpić warunek wyścigu.

Prostym przykładem jest bramka logiczna, która obsługuje wartości boolowskie. Bramka logiczna AND ma dwa wejścia i jedno wyjście. Jeśli wejścia A i B mają wartość true, bramka AND zwraca TRUE. Jeśli jedno lub oba wejścia mają wartość false, zwraca FALSE. Warunek wyścigu może wystąpić, jeśli program sprawdzi wynik bramki logicznej, zanim zmienne A i B zostaną załadowane. Prawidłowa kolejność powinna być następująca:

  1. Załaduj zmienną A
  2. Załaduj zmienną B
  3. Sprawdź wynik bramki logicznej AND

Nieprawidłowa kolejność wyglądałaby następująco:

  1. Załaduj zmienną A
  2. Sprawdź wynik bramki logicznej AND
  3. Załaduj zmienną B

Wynik drugiego przykładu może być taki sam jak w pierwszym przykładzie, ale nie musi. Na przykład zmienna B może mieć wartość FALSE zarówno przed załadowaniem, jak i po nim, co nie zmieniłoby wyniku. Jeśli A ma wartość FALSE, nie ma znaczenia, czy B ma wartość TRUE, czy FALSE. Jeśli jednak zarówno A, jak i B mają wartość true, wynikiem powinno być TRUE. Załadowanie zmiennej B po sprawdzeniu wyniku bramki logicznej spowodowałoby nieprawidłowy wynik FALSE.

Niespójne wyniki powodowane przez warunki wyścigu mogą prowadzić do błędów, które trudno wykryć. Programiści mogą unikać tych problemów, zapewniając przetwarzanie wątków w stałej kolejności.

Zaktualizowano January 24, 2020 przez Per C.

quizSprawdź swoją wiedzę

What function does a software assembler perform?

A
It converts assembly language into machine code.
0%
B
It links external references to the primary application.
0%
C
It loads a script into a virtual machine.
0%
D
It installs an application on an operating system.
0%
Correct! Incorrect!     View the Assembler definition.
More Quizzes →

Słownik komputerowy Tech Terms

Definicja Warunek wyścigu na tej stronie jest oryginalną definicją napisaną przez autorów TechTerms.com. Jeśli chcesz odwołać się do tej strony lub zacytować tę definicję, użyj zielonego paska cytowania bezpośrednio poniżej definicji.

Naszym celem jest wyjaśnianie terminologii komputerowej w prosty i zrozumiały sposób. Dążymy do dokładności i prostoty w każdej publikowanej definicji. Jeśli masz uwagi lub chcesz zaproponować nowy termin techniczny, skontaktuj się z nami.

Newsletter Tech Terms

Poszerzaj swoją wiedzę techniczną dzięki naszemu codziennemu lub tygodniowemu newsletterowi! Subskrybuj już dziś i otrzymuj nowe terminy oraz quizy prosto do skrzynki odbiorczej.

Zapisz się do bezpłatnego newslettera TechTerms

Jak często chcesz otrzymywać e-maile?

Możesz wypisać się lub zmienić częstotliwość w dowolnym momencie, korzystając z linków w każdym e-mailu. Pytania? Skontaktuj się z nami.

Uwaga: Newsletter jest wysyłany w języku angielskim.