Linux线程安全篇之---生产者与消费者模型(大厂业务必备知识)

目录

1.生产者和消费者模型:

1.1、123规则:

1.2、应用场景:

1.3、优点:

1.4、代码模拟:


1.生产者和消费者模型:

1.1、123规则:

  • 1.个线程安全的队列:只要保证先进先出的特性的数据结构就都可以称为队列
  • 这个队列要保证互斥(就是保证当前只有一个线程可以对他进行操作,其他线程不可以同时来操作)还要保证同步当生产者将队列中填充满了之后要通知消费者来进行消费,消费者消费之后通知生产者来生产
  • 2.中角色的线程:生产者和消费者(生产者往队列中生产,消费者从队列中拿内容消费)
  • 3.个规则:生产者和生产者互斥,消费者和消费者互斥,生产者和消费者互斥+同步。

1.2、应用场景:

比如说微信的后台程序:在不同的场景下一个进程可以是消费者也可以是生产者

1.3、优点:

1.忙闲不均:在一时刻可能接收消息的线程不忙而处理消息的线程一直处于工作状态。

2.生产者与消费者解耦:生产者和消费者不是串型的执行(串行的处理就是当一个进程接收到消息后才可以处理消息,然后处理完之后才可以发送消息,是一个串行的过程),而我们这里将消费者和生产者解耦,接收消息的一辈子就做接收消息的事情,而处理消息的只做处理消息的事情,发送消息的只做发送的事情,不受其他进程的影响。

3.支持高并发:当同一时刻多个人发送消息时这种情况是支持的,因为接收消息的线程只需要接收消息也不用感其他的事情,所以接收的速度很快。

1.4、代码模拟:

线程安全的队列代码模拟实现:

这里我们运行代码:我们可以看到有效的控制了生产者和消费者的消费顺序,当生产者生产一个消费者就消费

 如果看到这里觉得有用不如点个赞吧!!!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月半木斤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值