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

Distruptor无锁队列实现说明

1、Volatile仅保证线程间读、写立刻可见;且禁用cpu指令顺序优化;

2、Volatile只能用于单cpu指令的操作,如实现Volatile.Read(ref x);或Volatile.Writle(ref x, 10); 即最简单的读取或赋值;不能做x++、if(x>10) x++;等多cpu指令操作;

3、如存在两个cpu同时执行Volatile操作,不保证串行,因仅单cpu指令,读、写都可能提前发生,读到的内容可能是旧值,也可能是新值;读到的内容可理解成是内存地址的瞬间快照;

4、单线程赋值写入(x=1; Volatile.Write(flag))搭配另一线程 Volatile.Read,是它的舒适区;其他复杂场景(如多线程读、多线程写)需引入CAS或锁;

5、对于保护的数据是单调递增或递减场景,多个线程写需配合interlocked.CompareChange判断是否写入成功,不成功继续重试,即可实现线程排队操作;多个线程读取判断,拿到快照数据后和预期数据做比较(单调性很重要),判断是否符合预期;可能读到的数据比预期数据大,则后续处理需执行多次;

6、disruptor环形队列中,多生产者执行逻辑:

1)生产者获取消费者当前消费数据位置;

2)判断当前写入位置是否追上消费位置,如追上,等待并继续判断;

3)可以写入数据后,获取写入位置(当前位置加1);位置数据持续增加,用位运算获取可用环形队列索引;

4)使用Interlocked.CompareExchange尝试修改CurrentWritePos,如被其他线程先行修改过,写入失败,需重复1)-- 4)步骤;如写入成功,则成功占用了这个队列节点,后续可以将数据写入节点,并更新节点最新序号数组;

7、distruptor环形队列中,多消费者执行逻辑:

1)循环判断是否有可用节点;

2)生产者写入成功时,在节点状态数组中,对应节点位置写入最新的序号;

3)消费者找到大于当前位置的序号,得到可消费节点(一或多个);

4)消费一或多个节点数据;

http://www.jsqmd.com/news/1248578/

相关文章:

  • Django毕业设计-基于 Django 的宠物寄养与临时照料服务平台 面向宠物主人的线上寄养预约系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 深入解析I2C从机寄存器:从数据交换到FIFO与中断管理
  • 解码销氪「寻客宝」的智能获客路径
  • NE2-S1W以太网模块透明传输配置与工业应用实战指南
  • 如何组建一支高效的GEO优化团队:角色、流程与工具选型
  • 4个企业级实战项目的源代码已提供
  • 收藏!程序员必看:AI时代如何手握好牌,三类人却将掉队?
  • 基于大数据的电商商品推荐系统
  • 企业上Agent不是给员工配工具,是重建一套人机协作的组织
  • Unity ECS动态资源加载:用Addressables替代SubScene实现细粒度管理
  • 走遍苏州核心商圈!实地探店黄金回收门店,还原真实服务水准 - 奢侈品回收评测
  • 浑南区知名的小程序开发供应商找哪家
  • 具身智能中的因果建模:原理与应用实践
  • TPS25751 PD控制器主机接口与寄存器配置实战指南
  • Python的异步把我坑惨了,原来async/await和多线程的区别这么大
  • 企业级即时通讯:从聊天工具到工作流中枢
  • Java+Appium移动端自动化测试:从环境搭建到框架设计的工程化实践
  • 企业级Nginx性能优化实战与内核调优
  • 【重磅发布】Claude Code v2.1.216 :拯救超长会话 N² 性能危机、沙箱与网络隔离解耦、大修 Git Worktree 越权穿透!
  • 转错账别急着哭!我花了2000块学费,总结出这份“链上追债“实操手册
  • 生产级 CNI 选型与架构设计:高可用、安全与可观测性综合考量
  • 百度网盘提速全攻略:在线解析工具+直链提取教程,告别限速
  • VMware运行Win11虚拟机的配置与优化指南
  • 2026北京规范:钻石回收须出具无损鉴定证书,并标注净度瑕疵位置 - 二奢分享官
  • Unity贪吃蛇实战:从零构建专业菜单系统与音频管理器
  • 大模型微调技术:从LoRA到QLoRA的实践指南
  • TM4C129DNCPDT微控制器:ARM Cortex-M4F内核与丰富外设的工业级嵌入式平台解析
  • 台式机 BIOS 硬盘模式 IDE/AHCI/RAID 详解 + Win7 重装 0x0000007B/bootmgr is missing 报错完整解决
  • 大模型学习路线图:新手也能轻松入门,收藏这份进阶指南!
  • 市面上封装齐全的内存颗粒DIMM芯片测试座公司整套解决方案