int main(){ Semaforo puente(1); int cont =0; int tipo=0; while(){ if !fork(){ Derecho(); }else{ Izquierdo(); } } } Derecho(){ entrar(1); ... salir(); } Izquierdo(){ entrar(2); ... salir(); } entrar(int t){ if (cont ==0 || (tipo!=t && tipo!=0)){ puente.wait(); tipo=t; } cont++; } salir(){ cont--; if(cont==0){ puente.signal(); } }