Algorytm przetwarzania mógłby wyglądać następująco: odczytaj zmienną N i sprawdź, czy jest równa 0 jeśli tak (nie ma danych w X), przejdź do kroku 7. (tu wchodzimy, gdy N równe 1 lub więcej) odczytaj wartość X[N] zmniejsz wartość N o 1 (zaznacz, że N-ta dana została już zabrana) zrób coś z tą odczytaną daną (tu następuje właściwe przetwarzanie) (dana obsłużona – zajmij się następną) przejdź do kroku 1. (koniec pracy) Jest to najprostsza pętla opróżniająca stos X. W środowisku jednowątkowym działa zgodnie z oczekiwaniami, przetwarzając kolejno dane X[N], X[N-1], itd. aż do X, po czym zatrzymuje się z zerową wartością zmiennej N.
Jednak w środowisku wielowątkowym dwa równoczesne wątki mogą wykonać się w taki sposób (załóżmy N=2): wątek 1 wątek 2krokczynnośćkrokczynność1.odczyt N=22.(nic; N > 0)1.odczyt N=23.odczyt X[N], czyli X2.(nic; N > 0)3.odczyt X[N], czyli X4.zapis N=14.zapis N=15.(przetwarzanie)5.(przetwarzanie)6.(przejście do 1.)6.(przejście do 1.) Jak widać, oba wątki pobrały do przetwarzania tę samą daną X. Jeśli nasz program jest systemem księgowym, a w X było zapisane "dokonaj przelewu kwoty xxxx z rachunku nnnn na rachunek mmmm", to przelew zostanie zaksięgowany dwukrotnie.