void *producer (void *param){
int i;
for (i = 1; i <= 20; i++){
pthread_mutex_lock (&m);
if(num > BUF_SIZE){ /* overflow */
exit(1);
}
while (num == BUF_SIZE){
pthread_cond_wait (&_prod, &m)
}
buffer[add] = i;
add = (add + 1) % BUF_SIZE;
num++;
pthread_mutex_unlock (&m);
pthread_cond_signal (&c_cons);
printf ("producer: inserted %d\n", i); fflush(stdout);
}
printf ("producer quiting\n"); fflush(stdout);
return 0;
}