單生產者,單消費者

2021-06-22 09:18:01 字數 1281 閱讀 7199

/*單個生產者和單個消費者*/

#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 ...