Sekcja krytyczna
Z Wikipedii
Sekcja krytyczna - w programowaniu współbieżnym fragment kodu programu, który w danej chwili powinien być wykonywany przez nie więcej niż jeden wątek. Brak wzajemnego wykluczania się wykonywania sekcji krytycznych może spowodować błędy wykonania, np. dwukrotne zapisanie danej albo niepoprawna modyfikacja.
Rozpatrzmy dwa procesy zliczające liczbę wystąpień tego samego elementu:
Kod x = x + 1 rozkłada się na prostsze elementy:
1. wczytaj zmienną X 2. zwiększ zmienną X 3. zapisz zmienną X
W komputerze działają dwa takie procesy i zliczają wystąpienia:
1. początkowa wartość x = 1 2. proces 1 wykonuje instrukcję 1 3. system operacyjny przerywa działanie procesu 1 i przekazuje sterowanie do procesu 2, 4. proces 2 wykonuje wszystkie instrukcje i ustawia x na 2, 5. system przełącza działanie na proces 1 6. proces 1 zwiększa pobraną w pierwszym punkcie wartość o 1, czyli do 2, i wykonuje instrukcję 3 zapisując wartość 2.
Przy rozdzielnym działaniu programów wartość x powinna równać się 3 a nie 2.
Sekcje krytyczne realizuje się np. z wykorzystaniem muteksów lub semaforów.