当前位置: 首页 > news >正文

线程POSIX信号量/基于环形队列的⽣产消费模型

一,POSIX线程信号量

信号量的本质就是一个计数器,也是对资源的预定机制,POSIX信号量和SystemV信号量作⽤相同,都是⽤于同步操作,达到⽆冲突的访问共享资源⽬的。但 POSIX可以⽤于线程间同步。

1,初始化信号量

参数:

sem:传入sem_t类型数据

pshared:0表⽰线程间共享,⾮零表⽰进程间共享

value:信号量初始值

2,销毁信号量

3,等待信号量

4,发布信号量

二,基于环形队列的⽣产消费模型

基础理论:

上一次⽣产者-消费者的例⼦是基于queue的,其空间可以动态分配,现在基于固定⼤⼩的环形队列重写这 个程序(POSIX信号量):

其中head代表消费者,tail代表生产者,每个格子用信号量表示,在默认的情况下,全空或者全满的时候指向同一个位置。

任何人在访问资源之前都必须申请信号量:
对生产者来讲:剩余空间

对消费者来讲:剩余数据

我们先拿单生产单消费来描述条件:

1,消费者,生产者同时访问同一个位置:

        1.1,为空

                保证生产者,原子性先生产

        1.2   为满

                保证消费者,原子性先消费

2,非情况一情况

        生产者和消费者一定不在同一个位置

        消费者和生产者可不可以同时进行并发访问?

总结:

1,无法套一个圈

2,消费者无法超过生产者

3,同一个位置,互斥同步

4,在不同位置,并发

代码实现:

相关文章:

  • 基础算法——高精度
  • 大模型小白入门
  • 深入浅出零拷贝技术:高性能IO的底层原理与Java/Linux实战
  • HMC7043和HMC7044芯片配置使用
  • AI 代理 x Sui:开启 Web3 自动化新时代!
  • 自动扶梯人员摔倒掉落识别检测数据集VOC+YOLO格式5375张2类别
  • 概率论基础概念
  • 【leetcode hot 100 238】除自身以外数组的乘积
  • 腾讯 TDF 即将开源 Kuikly 跨端框架,Kotlin 支持全平台
  • 自动化设备车间数据采集创新解决方案
  • 【pta】1031 查验身份证
  • 使用并行计算优化对拍
  • mmseg的decode_heads解析:理解语义分割解码器设计
  • ubuntu22.04下Meshlab打开obj文件闪退——使用Appimage并放入收藏夹中
  • LLM参数高效微调技术 PRFT
  • Qt QOCI driver available but not loaded(可用但未加载)
  • MC9S12单片机上电初始化过程及BOOTLOADER分析
  • C++编程:进阶阶段—1内存模型
  • 【机器学习】应用梯度下降法训练线性回归算法模型
  • 玩转python: 深度解析Python高阶函数及推导式
  • 网站ico图标/58百度搜索引擎
  • 广告设计作品图片/百度搜索关键词排名优化技术
  • 刷网站排名怎么刷/uv推广平台
  • 邮件营销 wordpress/百度搜索引擎优化方案
  • 网站二维码怎么做的/做推广的公司一般都叫什么
  • 摄影做网站/郑州做网络营销渠道