代码:
#include<iostream>
#include<vector>
#include<queue>
#include<ctime>
#include<thread>
#include<mutex>
#include<windows.h>
#include<condition_variable>
using namespace std;
// 信号量定义
class Semaphore {
private:
mutex mut;
condition_variable condition;
int count;
public:
Semaphore(int count = 0) : count(count) {};
//P操作
void P() {
unique_lock<mutex> unique(mut);
--count;
if (count < 0)
condition.wait(unique);
}
//V操作
void V() {
unique_lock<mutex> unique(mut);
++count;
if (count <= 0)
condition.notify_one();
}
};
Semaphore _mutex_(1); // 互斥临界区
Semaphore _empty_(10); // 空槽数
Semaphore _full_(0); // 非空槽数
const int SIZR_P = 5; //生产者数量
const int SIZE_C = 5; //消费者数量
queue<int>q; //缓冲区队列
// 生产者
void producter() {
while (true) {
Sleep(500);
srand(int(time(0)));
_empty_.P();
_mutex_.P();
int data = rand() % 1000;
q.push(data);
co


1172

被折叠的 条评论
为什么被折叠?



