atomicSub
atomicSub
在共享内存(通常是 Storage Buffer)中的一个数值上执行线程安全的原子减法操作,用于在并行计算中安全地消耗资源或递减计数。
核心优势
从硬件层面保证了“读取-计算-写入”的原子性,杜绝了因竞争条件导致的“丢失的减法”问题,是实现并行资源管理(如引用计数、信号量)的核心工具。
常见用途
管理共享资源池,通过递减计数器来消耗或获取资源。
实现引用计数,当对象释放资源时安全地递减引用数。
在可破坏环境中聚合伤害,从物体的生命值中减去伤害量。
如何调整
其效果由 `valueNode`(要减去的值)参数控制。在能量护盾的例子中,`valueNode` 代表子弹的威力。将伤害值从 50 增加到 150,相当于将武器从‘冲锋枪’升级为‘反坦克炮’,每次命中都会更快地耗尽护盾能量,造成更显著的视觉破坏效果。
代码示例
1// 定义每发子弹的伤害值
2const damage = 50;
3// 从护盾对应点的生命值中原子性地减去伤害
4atomicSub(shieldHealthBuffer.element(index), damage);