#include #include #include int value; pthread_mutex_t mutex; pthread_cond_t new_prod; void *consumer(void *c) { pthread_mutex_lock(&mutex); while (value == 0) { pthread_cond_wait(&new_prod, &mutex); }; pthread_mutex_unlock(&mutex); pthread_exit(NULL); } int main(int argc, char** argv) { value = 0; pthread_mutex_init(&mutex, NULL); pthread_cond_init(&new_prod, NULL); pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); pthread_t cons; pthread_create(&cons, &attr, &consumer, NULL); printf("\nFIRST STEP\n"); value = 1; pthread_cond_signal(&new_prod); printf("\nSECOND STEP\n"); /* THE PROGRAM STOPS HERE */ pthread_join(cons, NULL); printf("\nTHIRD STEP\n"); pthread_attr_destroy(&attr); pthread_mutex_destroy(&mutex); pthread_cond_destroy(&new_prod); return (EXIT_SUCCESS); }