Редактировать : предложение @ ninjalj заменить while
-тип с использованием условной переменной - хороший совет , если вы используете while
-петл для ждать , пока не будет достигнуто состояние программы. Однако, если вы используете while
-loop для , выполняйте работу до тех пор, пока не будет достигнуто состояние программы, тогда ...
Вы должны обернуть код "lock-mutex; examine variable; unlock mutex
" в служебную функцию, и тогда ваше условие while
-loop может вызвать эту функцию. Например, функция полезности может быть написана, как показано в следующем коде:
int valueOfSharedVariable()
{
int status;
int result;
status = pthread_mutex_lock(&mutex);
assert(status == 0);
result = sharedVariable;
status = pthread_mutex_unlock(&mutex);
assert(status == 0);
return result;
}
Тогда ваше условие while
-loop может быть записано следующим образом:
while (valueOfSharedVariable() < 10) {
...
}