基于链表及环形队列的生产者与消费者简单实现

本文介绍了基于链表和环形队列的生产者与消费者模型的实现方法,包括使用条件变量、互斥锁和信号量等技术确保线程间的同步与互斥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       1.基于链表的生产者与消费者模拟实现

   使用条件变量与互斥锁完成,可保证线程的互斥与同步条件变量是衡量某种临界资源是否满足生产者生产或消费者消费的条件状况,而互斥锁是保证线程的安全性条件变量与互斥锁必须搭配使用,而在某些情况下,互斥锁的使用可不与条件变量搭配;

  分析生产者与消费者模型,可用“321原则”来描述:

  ‘3’指三种关系:生产者与消费者间关系(互斥与同步关系)、生产者与生产者间关系(互斥关系)、消费者与消费者间关系(互斥关系)

  ‘2’指两个角色:生产者(在临界区内放数据)、消费者(从临界区中拿数据);

  ‘1’指一个交易场所;

   代码实现:(#include <pthread.h>)

  (1)首先创建链表(链表基本操作)

   

   

   

  (2)基于链表的生产者与消费者模型

 

         

  (3)代码测试:

   


   2.基于环形队列的生产者与消费者模拟实现

分析:使用数组模拟的环形队列和多元信号量同时完成,需为生产者和消费者各设置一个信号量semPro/semCos;


    (1)代码实现:(#include <pthread.h>   #include <semaphore.h>)

    

    

    (2)代码测试:

    

在生产者与消费者模型中,需牢记“321原则”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值