#c #global-variables #pass-by-reference #pass-by-value #pass-by-pointer
#c #глобальные переменные #проходная ссылка #проходное значение #проходной указатель
Вопрос:
Глобальная переменная:
int REGISTRATION_SIZE = 10;
Я хочу передать глобальную переменную(REGISTRATION_SIZE) методу wait_for_avaliable в качестве аргумента метода, такого как wait_for_avaliable(размер int). Как я могу этого достичь?
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("Patient[%d] is waiting for an availabe desk.n",p-gt;thread_num); sleepForMs(rnd_wait_time); increase_meters(p); checkForRestOrCafe(p); pthread_cond_wait(register_cond,registration_mutex); } REGISTRATION_SIZE--; printf("Registration size:%dn",REGISTRATION_SIZE); pthread_mutex_unlock(registration_mutex); }
Я пробовал использовать этот способ, но он не работает:
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("Patient[%d] is waiting for an availabe desk.n",p-gt;thread_num); sleepForMs(rnd_wait_time); increase_meters(p); checkForRestOrCafe(p); pthread_cond_wait(register_cond,registration_mutex); } size--; printf("Registration size:%dn",size); pthread_mutex_unlock(registration_mutex); }
Комментарии:
1. Определите «не работает».
2. Я не могу получить тот же результат
3. Поскольку
size
это указатель на значение, которое вы хотите использовать, вам нужно будет использовать его правильно. Используйте*size
вместоsize
разыменования указатель. Пожалуйста, повысьте уровень предупреждений вашего компилятора до максимума и исправляйте свой код до тех пор, пока все предупреждения и ошибки не исчезнут.