const N = 100; int queue[N]; int count; void producer(void) { int item; for (;;) { create(&item); if (count == N) sleep(); count = count + 1; queue[count - 1] = item; if (count == 1) wakeup(consumer); } } void consumer(void) { int item; for (;;) { if (count == 0) sleep(); item = queue[count - 1]; count = count - 1; if (count == N - 1) wakeup(producer); consume(&item); } }Η παραπάνω λύση έχει πρόβλημα συνθήκης ανταγωνισμού ως προς τη χρήση της μεταβλητής count.