全文预览

用多进程同步方法演示“生产者-消费者”问题

上传者:苏堤漫步 |  格式:doc  |  页数:13 |  大小:505KB

文档介绍
?return0;}生产者函数:void*producer(void*arg){?pthread_detach(pthread_self()); //线程分离?charinfo[50]="Poolisfull,producer";?char*value=(char*)malloc(30); sprintf(value,"%lu",pthread_self());?strcat(info,value);?strcat(info,"iswaiting!");?while(1)?{ pthread_testcancel(); //设置取消点 pthread_cleanup_push(pthread_mutex_unlock,(void*)&mutex);//线程清理处理函数 pthread_mutex_lock(&mutex); //对临界资源加锁 while(size>=BUFFER_LENGTH) { add_to_list(list_pool,info); producer_wait=1; pthread_cond_wait(&full_cond,&mutex); //线程阻塞,并解锁 producer_wait=0; } pthread_testcancel(); //设置取消点 operate_pool(1); //对缓冲池操作 pthread_mutex_unlock(&mutex); //解锁 pthread_cond_signal(&empty_cond); //唤醒消费者pthread_cleanup_pop(0); //线程清理处理函数 pthread_testcancel(); //设置取消点 usleep(10);?}}消费者函数:void*consumer(void*arg){?pthread_detach(pthread_self()); //线程分离

收藏

分享

举报
下载此文档