linux下的生产者消费者问题

时间:2013-06-07 13:52:49
【文件属性】:

文件名称:linux下的生产者消费者问题

文件大小:2KB

文件格式:TXT

更新时间:2013-06-07 13:52:49

linux下的生产者消费者问题

#include #include #include #include #include #define N 2 // 消费者或者生产者的数目 #define M 10 // 缓冲数目 int in = 0; // 生产者放置产品的位置 int out = 0; // 消费者取产品的位置 int buff[M] = {0}; // 缓冲初始化为0, 开始时没有产品 sem_t empty_sem; // 同步信号量, 当满了时阻止生产者放产品 sem_t full_sem; // 同步信号量, 当没产品时阻止消费者消费 pthread_mutex_t mutex; // 互斥信号量, 一次只有一个线程访问缓冲 int product_id = 0; //生产者id int prochase_id = 0; //消费者id /* 打印缓冲情况 */ void print() { int i; for(i = 0; i < M; i++) printf("%d ", buff[i]); printf("\n"); } /* 生产者方法 */ void *product() { int id = ++product_id; while(1) { // 用sleep的数量可以调节生产和消费的速度,便于观察 sleep(1); //sleep(1); sem_wait(&empty_sem); pthread_mutex_lock(&mutex); in = in % M; printf("product%d in %d. like: \t", id, in); buff[in] = 1; print(); ++in; pthread_mutex_unlock(&mutex); sem_post(&full_sem); } }


网友评论

  • 不错的代码,是互斥锁和计数信号量解决生产者消费者问题,代码没有问题,可以编译运行,已经测试过,注释也有,谢谢分享~!!!
  • 写的很好 值得借鉴
  • 不错的,可以运行的
  • 不错,是互斥锁和计数信号量解决生产者消费者问题
  • 还不错,完美运行
  • 一小段代码,,,写的不错,,,注释也还行,,只不过感觉5分有点多哦亲。
  • 程序很完美,一点错误都没有~而且注释详细,很好懂。学生党直接拿去用了
  • 是很好的程序,运行过,没有错误。并且注释也很清晰
  • 很实用,算法也是优化过的
  • 非常好,细节都想的很周到,是出色的程序