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