Linux之线程进阶---封装信号量
2026/8/24 5:43:55 网站建设 项目流程

代码

封装信号量

基于信号量的环形队列

大纲

构造

enqueue

1.预定资源

2.找位置生产

3.释放资源

pop

消费者也类似

int num = 0; pthread_mutex_t mutex; int GetNumber() { pthread_mutex_lock(&mutex); num++; pthread_mutex_unlock(&mutex); return num; } void *consumerRoutine(void *args) { RingQueue<int> *rq = static_cast<RingQueue<int> *>(args); int number = GetNumber(); while (1) { int data; rq->Pop(&data); cout << "con--" << number << " "; cout << "我是消费者,消费了--" << data << endl; } } void *productorRoutine(void *args) { RingQueue<int> *rq = static_cast<RingQueue<int> *>(args); int data = 5; int number = GetNumber(); while (1) { sleep(1); rq->Enqueue(data); cout << "pro--" << number << " "; cout << "我是生产者,生产了--" << data++ << endl; } } int main() { RingQueue<int> *rq = new RingQueue<int>(); pthread_t c, p; pthread_create(&c, nullptr, consumerRoutine, rq); pthread_create(&p, nullptr, productorRoutine, rq); pthread_join(c, nullptr); pthread_join(p, nullptr); return 0; }

单生产单消费

改写多任务

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询