c++ thread 模擬實現的生產者消費者實驗。
/**多生產者多消費者**/
/**by darius**/
#include using namespace std;
const int maxsize = 4; //倉庫大小
const int plan = 100; //計畫生產的產品個數
struct warehouse
};static void producer(warehouse& ware_house, int product)
ware_house.q[ware_house.rear++] = product; //生產產品
ware_house.rear %= maxsize;
cout << "thread " << this_thread::get_id() << " produced " << product << ", ";
cout << "the count of products : " << (ware_house.rear-ware_house.front+maxsize)%maxsize << endl;
ware_house.not_empty.notify_all(); //因為生產了產品,所有佇列非空,通知所有消費者
}static void consumer(warehouse& ware_house)
int product = ware_house.q[ware_house.front++]; //消費產品
ware_house.front %= maxsize;
cout << "thread " << this_thread::get_id() << " consumed " << product << ", ";
cout << "the count of products : " << (ware_house.rear-ware_house.front+maxsize)%maxsize << endl;
ware_house.not_full.notify_all(); //因為消費了產品,所有佇列不滿,通知所有生產者
}int unit_time_p, unit_time_c; //生產者生產單位時間和消費者消費單位時間
static void run_p(warehouse& ware_house)
}static void run_c(warehouse& ware_house)
}int main()
Java多執行緒模擬實現消費者生產者問題
author sun 生產者消費者模型 public class multithreading public static void main string args author sun 倉庫類 class store 向倉庫中新增貨物的方法 public synchronized void ad...
多執行緒 模擬生產者消費者問題
分別用管程法和訊號燈法模擬生產者消費者問題 應用場景 生產者和消費者問題 假設倉庫中只能存放一件產品,生產者將生產出來的產品放入倉庫,消費者將倉庫中產品取走消費.如果倉庫中沒有產品,則生產者將產品放入倉庫,否則停止生產並等待,直到倉庫中的產品被消費者取走為止.如果倉庫中放有產品,則消費者可以將產品取...
多執行緒 生產者和消費者
生產者 消費者問題 生產者向產品區里放產品,當產品區里滿了,需要等待 消費者從產品區里取產品消耗,當產品區里空了,需要等待。public class producerandconsumer 消費者 static class consumer implements runnable catch int...