#include #include #include #include #include #include int n=10, in=0,out=0,buffer[10]; sem_t empty,full; void* producer(void *arg){ int tag= pthread_self()%100; int nextPro; srand(time(NULL)+tag); while(1){ nextPro = rand()%97; sem_wait(&empty); buffer[in] = nextPro; printf("production:%d %d\n",nextPro,buffer[in]); usleep(1000*1000/20); in = (in+1)%n; sem_post(&full); usleep(1000*1000/2); } } void* consumer(void *arg) { int item; while(1){ sem_wait(&full); item = buffer[out]; sem_post(&empty); printf("consume:%d\n",buffer[out]); out = (out+1)%n; usleep(1000*1000/10); } } int main(){ }