W poniższym przykładzie dwa podzadania operują na współdzielonej zmiennej
Podzadanie APodzadanie B1A: Odczytaj zmienną V1B: Odczytaj zmienną V2A: Dodaj 1 do zmiennej V2B: Dodaj 1 do zmiennej V3A: Zapisz wartość w zmiennej V3B: Zapisz wartość w zmiennej V
Jeśli instrukcja 1B zostanie wykonana pomiędzy 1A i 3A, lub jeśli instrukcja 1A zostanie wykonana pomiędzy 1B i 3B, to wynik działania programu będzie nieprawidłowy. Zjawisko to jest znane jako wyścigi lub hazard (ang. race conditions), a fragment programu, który nie powinien być wykonywany przez kilka podzadań jednocześnie, nazywamy sekcją krytyczną. W takim przypadku jak powyżej programista powinien zapewnić wzajemne wykluczanie pomiędzy podzadaniami w dostępie do zmiennej Można to osiągnąć, stosując blokady – konstrukcje programistyczne, dzięki którym tylko jedno podzadania ma dostęp do określonego zasobu.