
Condition Variables
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER;
int count; int valid = 0;
void
*
writeCounter() {
int i;
for (i = 0 ; i < 10 ; i++) {
pthread_mutex_lock(&mutex1);
while (valid) pthread_cond_wait(&cond1, &mutex1);
count = i; valid = 1;
pthread_cond_signal(&cond1);
pthread_mutex_unlock(&mutex1);
}
return NULL; }
void
*
readCounter() {
int done = 0;
do {
pthread_mutex_lock(&mutex1);
while (!valid) pthread_cond_wait(&cond1, &mutex1);
printf("%d\n", count);
valid = 0; done = count == 9;
pthread_cond_signal(&cond1);
pthread_mutex_unlock(&mutex1);
} while (!done);
return NULL; }
Comentarios a estos manuales