43.线程同步

看 2.cond代码

生产者和消费者 是互斥关系保证数据安全。建个群通知就是同步

看代码3.cp

生产了个数据 此时发现当前消费者在休眠,唤醒消费者,如果消费者没休眠,那么消费者就pop,就不需要唤醒

作为消费者,pop数据后这个队列一定不为满,此时如果生产者休眠大于0,唤醒,如果生产者0,那说明一直在push,不用唤醒

这样就可以互相唤醒了,

如果都不放if,生产完直接唤醒消费者,消费完唤醒生产者,唤醒操作放在解锁之前还是之后,

若在前生产完了唤醒消费者,消费者能醒来,申请锁失败,但是不是在条件变量等而是去锁等,解锁重新持有锁。就可以返回了,所以可以放锁前面。

后面的话,万一锁被其他人拿走,在锁等待,到时候也能拿到锁,都行。放锁前可以、

1.万一休眠失败,没进入休眠,还push,多插数据了

2.多生产单消费,消费一个,broad唤醒全部呢,此时第一个生产者填了一个空,剩下也填这样多填了

用while二次 检测,走到下面才能确定一定有空间有数据

每个线程都可以从队列拿到对应任务串行,但是线程是并发处理这个任务,此时生产者可以从另一个模块继续获取任务,这是生产消费模型,获取处理任务才是最耗时的

一把锁,本就是多生产多消费,不需要再改代码

看课件代码吧,

相关推荐
玖石书几秒前
WSL2 手动安装 Ubuntu 24.04 到指定磁盘位置
linux·运维·ubuntu·wsl
库玛西43 分钟前
深入浅出传输层:UDP 与 TCP 协议全景指南
linux·服务器·网络·c++·笔记·tcp/ip·udp
满怀冰雪2 小时前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
薛定谔的悦4 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
2601_962218477 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
东方-教育技术博主8 小时前
自动编码在教育场景中的重要性:一项基于多源证据的深度综述
大数据·人工智能
新时代牛马8 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
liuqs3328 小时前
机器人产业加速发展,制造业正在迎来新的自动化探索
大数据·人工智能
腾讯云大数据8 小时前
DataBuddy数据语义驱动的企业Agent Runtime实践
大数据·人工智能·腾讯云·agent
Julien20048 小时前
控制 SELinux 文件上下文
linux·运维·服务器