作业社区
探索学习新天地,共享知识资源!
学无止境呀呀呀 的学生作业:
#include #include #include #include #include static int number = 0;//共享变量 static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; static int total_of_produce = 0; //总的生产产品的数量 static int total_of_consume = 0; //总的消费产品的数量 static bool done = false; //生产者 void *thread_producer(void *arg) { int cnt = atoi((char *)arg); int i,tmp; for(i = 0;i= total_of_produce){ //消费完毕 done = true; pthread_cond_broadcast(&cond);//唤醒所有等待者退出 } pthread_mutex_unlock(&mtx); sleep(3); } pthread_exit((void *)0); } int main(int argc,char *argv[]) { pthread_t tid[argc-1]; pthread_t cid[argc-1]; int i; for(i=1;i
+79
学无止境呀呀呀 的学生作业:
#include #include #include #include #include #include // ./a.out 1234 =====> 创建4个线程,分别生产1个产品 2个产品 3个产品 4个产品 // argc = 5 static int number = 0; //记录产品的数量 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; void *thread_handler(void *arg) { //生产者线程 获取生产的产品数量 int cnt = atoi((char *)arg); int i,tmp; for(i = 0;i0) { total_of_consume++; //当仓库中有产品,就可以循环消费 printf("消费一个产品,产品数量:%d\n",--number); done = total_of_consume>=total_of_produce; sleep(1); } pthread_mutex_unlock(&mutex); if(done) break; } for(i = 0;i
+78