Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

CI-0122 Sistemas operativos

Ejemplos

CI0122 / Ejemplos


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();
	}
}