W dalszym ciągu wykonania tego samego programu możliwy jest również inny przypadek. Przypuśćmy, że wątek nr 1 wolniej przetwarzał X i teraz wątek nr 2 zaczyna kolejny cykl: wątek 1wątek 2krokczynnośćkrokczynność1.odczyt N=11.odczyt N=12.(nic; N > 0)3.odczyt X[N], czyli X2.(nic; N > 0)4.zapis N=03.odczyt X[N], czyli X........ Pomimo posłużenia się licznikiem N wątek nr 1 usiłuje pobrać nieistniejący element danych spod nielegalnego indeksu – X. W zależności od różnych czynników spowoduje to natychmiastowe awaryjne przerwanie działania programu albo dowolne, nieprzewidywalne zaburzenia (błędy) w dalszym jego działaniu.
Do zapobiegania takim sytuacjom wykorzystuje się mechanizmy synchronizacji wątków: semafory, muteksy, sekcje krytyczne.
Zobacz też
wielowątkowość wielozadaniowość bezpieczeństwo wątków
Kategoria:Programowanie równoległe