#include #include #include #include int b; /* buffer size = 1; */ int turn=0; main() { pthread_t producer_thread; pthread_t consumer_thread; void *producer(); void *consumer(); pthread_create(&consumer_thread,NULL,consumer,NULL); pthread_create(&producer_thread,NULL,producer,NULL); pthread_join(consumer_thread,NULL); } void add_buffer(int i) { b = i; } int get_buffer() { return b ; } void *producer() { int i = 0; printf("I'm a producer\n"); while (1) { while (turn == 1); add_buffer(i); printf("put %d \n", i); fflush(stdout); usleep(100000); turn = 1; i = i + 1; } pthread_exit(NULL); } void *consumer() { int i,v; printf("I'm a consumer\n"); for (i=0;i<100;i++) { while (turn == 0); v = get_buffer(); turn = 0; printf("got %d \n", v); fflush(stdout); usleep(1000000); } pthread_exit(NULL); }