Посмотрел я ваш проект - косяк в том, что вы считаете что между проверкой значения и изменением того значения проходит 1 такт))) но это не так)))
Для того, чтобы все было ок нужно использовать 1 элемент, где семафоры реализованы по умолчанию - это списки. Отвязывайтесь от глобальных переменных...