Par exemple, il est possible d'implémenter une région critique conditionnelle à l'aide des sémaphores mutex(1,vide), delai1(0,vide) et delai2(0,vide), et des entiers compteur1 et compteur2 initialisés à 0.
debut
wait(mutex);
tant que non B faire debut
compteur1 := compteur1 + 1;
si compteur2 > 0 alors
signal(delai2);
sinon
signal(mutex);
wait(delai1);
compteur1 := compteur1 - 1;
compteur2 := compteur2 + 1;
si compteur1 > 0 alors
signal(delai1);
sinon
signal(delai2);
wait(delai2);
compteur2 := compteur2 - 1;
fin;
S;
si compteur1 > 0 alors
signal(delai1);
sinon
si compteur2 > 0 alors
signal(delai2);
sinon
signal(mutex);
fin