Inicialmente, o semáforo (modelando um recurso compartilhado) é criado com valor 1. O processo filho garante a posse do recurso fazendo a operação P sobre o semáforo, levando seu valor para 0. O processo pai é bloqueado sobre um semáforo (fazendo P sobre um semáforo com valor nulo). Ele se desbloqueará quando ser filho liberar o recurso demandado por ele, fazendo a operação V que colocará novamente o valor do semáforo em 1.
Resultado da execução:
euler:~> test_sem_dijkstra
Criacao do semaforo do identificador 128
Eu sou o PAI e vou dormir 2 segundos...
Eu sou o FILHO e fazer P sobre o semaforo
Eu sou o FILHO e vou dormir 10 segundos...
Eu sou o PAI e vou me bloquear fazendo P sobre o semaforo
Eu sou o FILHO e vou fazer V sobre o semaforo
Eu sou o PAI e acabei de me desbloquear
Eu sou o PAI e vou acabar o processamento