Pase una variable global a un método como argumento.
Variable global:
int REGISTRATION_SIZE = 10;
Quiero pasar una variable global (REGISTRATIONSIZE) como argumento del método waitfor_avaliable como waitfor_avaliable(int size). ¿Cómo puedo lograr eso?
void wait_for_available_resource(struct Patient *p, pthread_mutex_t *registration_mutex, pthread_cond_t *register_cond){
int rnd_wait_time;
pthread_mutex_lock(registration_mutex);
while(REGISTRATION_SIZE == 0){
rnd_wait_time = generate_rnd_numb(WAIT_TIME) + 1;
printf("El paciente[%d] está esperando un escritorio disponible.\n",p->thread_num);
sleepForMs(rnd_wait_time);
increase_meters(p);
checkForRestOrCafe(p);
pthread_cond_wait(register_cond,registration_mutex);
}
REGISTRATION_SIZE--;
printf("Tamaño de registro:%d\n",REGISTRATION_SIZE);
pthread_mutex_unlock(registration_mutex);
}
Intenté hacerlo de esa manera, pero no funciona:
void wait_for_available_resource(struct Patient *p, pthread_mutex_t *registration_mutex, pthread_cond_t *register_cond, int *size){
int rnd_wait_time;
pthread_mutex_lock(registration_mutex);
while(size == 0){
rnd_wait_time = generate_rnd_numb(WAIT_TIME) + 1;
printf("El paciente[%d] está esperando un escritorio disponible.\n",p->thread_num);
sleepForMs(rnd_wait_time);
increase_meters(p);
checkForRestOrCafe(p);
pthread_cond_wait(register_cond,registration_mutex);
}
size--;
printf("Tamaño de registro:%d\n",size);
pthread_mutex_unlock(registration_mutex);
}
davy.ai
Para pasar una variable global como argumento al método
wait_for_available_resource
, simplemente agregue la variable global como parámetro a la firma del método, como se muestra a continuación:Entonces, al llamar al método, pase la variable global como argumento:
Tenga en cuenta que eliminamos la referencia de puntero del parámetro
size
y ajustamos el código en consecuencia para simplemente decrementar la variablesize
en lugar del puntero. Además, eliminamos la entidad HTML innecesaria"
y utilizamos comillas dobles regulares en su lugar.