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

环形队列保护共享资源的可靠性

1.环形队列包括三个基础单元:写索引(int),读索引(int),队列单元(数组成员)

2.共享资源访问与读写常见场景:1.线程与线程之间;2.任务与中断之间

3.环形队列通常有两个操作api:第一个api:向环形队列中写数据;第二个api:向环形队列读数据;

        3.1共享资源操作:向环形队列写数据,主要对应写索引(注意写索引一定要等数据添加完毕了才移动,否则会导致共享资源混论:提前标记了数据被写入,实际数据还没来得及写入,就被读取api操作,造成数据混论),写入之前要判断队列是否有空想位置(写指针加一不等于都指针:写指针不能追上读指针),然后再写入数据,最后再操作写指针移动位置。

        3.2向环形队列读取数据,主要对应写索引(同样需要注意等数据读取完毕再移动写指针,否者会读取到异常数据),判断环形队列数据是否为空(写指针加上缓冲区总长度减去读指针,最后对总长度取余),从环形队列读取数据,最后再操作读指针移动位置。

4.另外需要注意的是读写指针需要使用volatile修饰,直接从内存中访问,避免优化后从寄存器读取到中间值。

5.这样就可以防止多线程操作或者中断操作,造成共享数据混乱,当然在多线程中可以使用互斥量操作来阻塞共享资源的访问,但是在中断服务函数中不适用,中断服务函数一般不允许长时间阻塞。

分享观点如果存在问题,欢迎指正,谢谢


http://www.mrgr.cn/news/2777.html

相关文章:

  • 掌静脉识别的相关研究论文为什么都没有公开源代码?
  • 培训学校课程管理系统-计算机毕设Java|springboot实战项目
  • Spark MLlib 特征工程系列—特征提取Word2Vec
  • StarRocks 存算分离 Compaction 原理
  • 2024.08.07校招 实习 内推 面经
  • roles以及想项目搭建
  • 数据结构----队列
  • Grafana指标汉化攻略:轻松实现中文可视化
  • 取证工具 ElcomSoft iOS Forensics Toolkit: 在 Windows 中加载 HFS 镜像
  • 第1章-02-Python环境安装与测试
  • 数字虚拟人原理
  • 44 个 React 前端面试问题
  • 自然语言处理实战项目30-基于RoBERTa模型的高精度的评论文本分类实战,详细代码复现可直接运行
  • 合并两个有序链表--力扣
  • 强化安全基线:反射API与最小权限原则
  • 使用docker compose一键部署 Portainer
  • 从密码学角度看网络安全:加密技术的最新进展
  • NGINX
  • 《Techporters架构搭建》-Day06 Springboot国际化
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统