代码拉取完成,页面将自动刷新
#include "ringQueue.hpp"
#include <cstdlib>
#include <ctime>
#include <sys/types.h>
#include <unistd.h>
void *consumer(void *args)
{
RingQueue<int> *rq = (RingQueue<int> *)args;
while (true)
{
int x;
rq->pop(&x);
//std::cout << "消费: " << x << std::endl;
std::cout << "消费: " << x ;
std::cout<<" [" << pthread_self() << "]" << std::endl;
sleep(1);
}
}
void *productor(void *args)
{
RingQueue<int> *rq = (RingQueue<int> *)args;
while (true)
{
int x = rand() % 100 + 1;
// std::cout << "生产: " << x << std::endl;
std::cout << "生产: " << x ;
std::cout<< " [" << pthread_self() << "]" << std::endl;
rq->push(x);
}
}
// 单线程版本
// int main()
// {
// RingQueue<int> *rq = new RingQueue<int>();
// pthread_t c, p;
// pthread_create(&c, nullptr, consumer, (void *)rq);
// pthread_create(&p, nullptr, productor, (void *)rq);
// pthread_join(c, nullptr);
// pthread_join(p, nullptr);
// return 0;
// }
//多线程版本
int main()
{
srand((uint64_t)time(nullptr) ^ getpid());
RingQueue<int> *rq = new RingQueue<int>();
// rq->debug();
pthread_t c[3],p[2];
pthread_create(c, nullptr, consumer, (void*)rq);
pthread_create(c+1, nullptr, consumer, (void*)rq);
pthread_create(c+2, nullptr, consumer, (void*)rq);
pthread_create(p, nullptr, productor, (void*)rq);
pthread_create(p+1, nullptr, productor, (void*)rq);
for(int i = 0; i < 3; i++) pthread_join(c[i], nullptr);
for(int i = 0; i < 2; i++) pthread_join(p[i], nullptr);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。