Sem.hpp(用于封装信号量):
#include
#include
#include
#include
using namespace std;
class Sem
{
public:
Sem(int num)
{
sem_init(&_sem,0,num);
}
~Sem()
{
sem_destroy(&_sem);
}
voi服务器托管网d V()
{
sem_post(&_sem);
}
void P()
{
sem_wait(&_sem);
}
private:
sem_t _sem;
};
Task.hpp(封装任务队列):
#include "sem.hpp"
#include
#include
#include
using namespace std;
int num = 10;
class Task
{
public:
Task(): _space(num), _data(0)
{
pthread_mutex_init(&_mtx, nullptr);
}
void Push(int x)
{
_space.P(); // 生产者等待空间
pthread_mutex_lock(&_mtx);
q.push(x);
cout q;
};
.cc:
#include"Task.hpp"
void* consumer(void* args)
{
Task* t = (Task*)args;
while(1)
{
sleep(1);
t->Pop();
}
return nullptr;
}
void* p服务器托管网roducer(void* args)
{
Task* t = (Task*)args;
while(1)
{
t->Push(rand()%1000);
}
return nullptr;
}
int main()
{
srand(time(nullptr));
Task* t = new Task;
pthread_t Consumer[5];
pthread_t Producer[5];
for(int i = 0; i
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 【开源】SpringBoot框架开发独居老人物资配送系统
目录 一、摘要 1.1 项目介绍 1.2 项目录屏 二、功能模块 三、系统展示 四、核心代码 4.1 查询社区 4.2 新增物资 4.3 查询物资 4.4 查询物资配送 4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVA+Vue+Sp…