/*單個生產者和單個消費者*/
#include
#include
#include
#include
#include
#include
#define buffer_size 5 //產品庫存大小
#define product_cnt 50 //產品生產總數
struct product_cons
buffer;
void init(struct product_cons *p)
void fini(struct product_cons *p)
void cleanup_handler(void *arg)
//儲存 乙個資料 到 bufferr
void put(struct product_cons *p, int data) //輸入產品子函式
p->buffer[p->writepos] = data; //寫資料
p->writepos++;
if(p->writepos >= buffer_size) //如果寫到 尾部,返回
p->writepos = 0;
pthread_cond_signal(&p->notempty); //傳送有資料訊號
pthread_mutex_unlock(&p->lock); //解鎖
}//讀,移除 乙個資料 從 buffer
int get(struct product_cons *p)
/*讀 乙個 資料*/
data = p->buffer[p->readpos];
p->readpos++;
if(p->readpos >= buffer_size) //如果讀到 尾
p->readpos = 0;
pthread_cond_signal(&p->notfull);
pthread_mutex_unlock(&p->lock);
return data;
}void *producer(void *data) //子執行緒 ,生產
printf("producer stopped\n");
return null;
}void *consumer(void *data)
printf("consumer stopped\n");
return null;
}int main(int argc, char *argv)
單生產者 單消費者
父親生產蘋果,女兒消費蘋果,當盤子中沒有蘋果的時候父親生產,女兒只能等待,當盤子中有蘋果的還是父親等待女兒消費 package com.cc.day16 public class demo01 定義乙個類,描述消費的產品 定義公共的變數 public string name public int c...
執行緒 單生產者單消費者
單生產者單消費者 乙個生產線成乙個消費執行緒 乙個生產任務乙個消費任務 乙個產品 public class demo5 產品類class p catch interruptedexception e this.name name this.price price system.out.println...
生產者消費者問題之多生產者 單消費者模型
與單生產者和單消費者模型不同的是,多生產者 單消費者模型中可以允許多個生產者同時向產品庫中放入產品。所以除了保護產品庫在多個讀寫執行緒下互斥之外,還需要維護生產者放入產品的計數器,如下 include include include include include static const int ...