Linux之线程进阶---封装信号量

📅 发布时间:2026/8/24 5:44:00
Linux之线程进阶---封装信号量 代码封装信号量基于信号量的环形队列大纲构造enqueue1.预定资源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) { RingQueueint *rq static_castRingQueueint *(args); int number GetNumber(); while (1) { int data; rq-Pop(data); cout con-- number ; cout 我是消费者,消费了-- data endl; } } void *productorRoutine(void *args) { RingQueueint *rq static_castRingQueueint *(args); int data 5; int number GetNumber(); while (1) { sleep(1); rq-Enqueue(data); cout pro-- number ; cout 我是生产者,生产了-- data endl; } } int main() { RingQueueint *rq new RingQueueint(); 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; }单生产单消费改写多任务