P1 kontynuuje działanie P2 x2 = licznik 1 2 1 system operacyjny przełącza kontekst na P2, P2 wykonuje pierwszą instrukcję P1 licznik = x1 2 2 1 system operacyjny z powrotem przełącza kontekst na P1, P1 kończy wykonywanie na aktualizacji globalnego licznika P2 x2 = x2 + 1 2 2 2 system operacyjny z powrotem przełącza kontekst na P2, który kontynuuje działanie P2 licznik = x2 2 2 2 P2 kończy działanie i aktualizuje globalny licznik błędną wartością
Powód błędu: oba procesy posługują się aktualną wartością licznika przy obliczeniach, nie uwzględniono sytuacji (która w tym przykładzie zaistniała), że zawartość licznika zmienia się w trakcie obliczeń.
Przy prawidłowym wykonywaniu tego kodu, to znaczy zagwarantowaniu sekcją krytyczną, że te trzy instrukcje wykonają się w całości wyłącznie w kontekście jednego procesu, końcową wartością licznika byłoby spodziewane 3.
proces działanie licznik x1 x2 komentarz 1 ? ? sytuacja początkowa, licznik zainicjowany na wartość 1 P1 x1 = licznik 1 1 ? system operacyjny przełącza kontekst na P1, P1 wykonuje pierwszą instrukcję x1 = x1 + 1 1 2 ?