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; }