void *mujer(){
	
	mujer_quiere_entrar();
	sleep(3);
	mujer_sale();
	pthread_exit(NULL);
}
Example #2
0
void * mujer_quiere_entrar() {
    pthread_mutex_lock(&mutex_mujeres);
    mujeres_espera++;
    printf("Llega una mujer (%d en espera)\n",mujeres_espera);
    pthread_mutex_unlock(&mutex_mujeres);

    pthread_mutex_lock(&mutex_bano);
    if(ocupado == 0)
        pthread_cond_wait(&permitir_mujeres,&mutex_bano);

    if(ocupado == 2 || ocupado == 1) {
        ocupado = 1;
        pthread_mutex_lock(&mutex_mujeres);
        mujeres_espera--;
        mujeres_dentro++;
        printf("Entra una mujer (%d en espera)\n",mujeres_espera);
        printf("Sanitario ocupado por mujeres\n");
        pthread_mutex_unlock(&mutex_mujeres);
    }
    pthread_mutex_unlock(&mutex_bano);
    sleep(rand() % 5);
    mujer_sale();

    pthread_exit(NULL);
}
void * sacarPersona (void * arg){
	while (abierto){
		pthread_mutex_lock(&mutexBanio);
		if (personasEnBanio > 0){
			if (tipodDeBanio == 1 ){
				mujer_sale();
			} else {
				hombre_sale();
			}

			if (personasEnBanio == 0){
				printf("Sanitario vacio\n");
			}
		}
		pthread_mutex_unlock(&mutexBanio);
		sleep(5);
	}
	pthread_exit(NULL);
}
Example #4
0
void * mujer_quiere_entrar(void * p)
{
    pthread_mutex_lock(&sumaM);
    mujeres++;
    printf("Mujer quiere entrar (En espera %d) \n", mujeres);
    pthread_mutex_unlock(&sumaM);

    pthread_mutex_lock(&Mbano);
    if(dentro == V){
        dentro = M;
        printf("Sanitario ocupado por Mujeres \n");
    }else if(dentro == H){
        pthread_cond_wait(&condM, &Mbano);
        dentro = M;
    }
    bano++;
    pthread_mutex_unlock(&Mbano);
    pthread_mutex_lock(&sumaM);
    mujeres--;
    printf("Mujer entra (En espera %d) \n", mujeres);
    pthread_mutex_unlock(&sumaM);
    mujer_sale();
}