RenderScript 原子更新函数
    
    
      
    
    
      
      使用集合让一切井井有条
    
    
      
      根据您的偏好保存内容并对其进行分类。
    
  
  
      
    
  
  
  
  
  
    
    
    
  
  
    
    
    
概览
如需更新多个线程之间共享的值,请使用以下函数。它们可确保值以原子方式更新,即以正确的顺序执行内存读取、更新和内存写入。
 这些函数比其非原子函数慢,因此请仅在需要同步时使用。
 请注意,在 RenderScript 中,即使您没有明确创建代码,代码也可能会在单独的线程中运行。RenderScript 运行时通常会将一个内核的执行拆分到多个线程中。更新全局变量应使用原子函数完成。如果可能,请修改算法,完全避免采用这些错误。
总结
函数
  
    rsAtomicAdd
    :线程安全加法
  
  
  
  
  
 以原子方式向 addr 处的值添加一个值,即 *addr += value。
   
 
  
    rsAtomicAnd
    :线程安全按位和
  
  
      参数
    
    | addr | 要修改的值的地址。 | 
|---|
    | value | 值与 的值。 | 
|---|
    
   
  
  
 以原子方式执行一个按位值和两个值,并将结果存储回 addr 处,即 *addr &= value。
   
 
  
    rsAtomicCas
    :线程安全的比较和设置
  
  
      参数
    
    | addr | 在测试通过时要比较和替换的值的地址。 | 
|---|
    | 比较值 | 要测试 *addr 的值。 | 
|---|
    | 新值 | 测试通过时要写入的值。 | 
|---|
    
   
  
  
 如果 addr 处的值与 compareValue 匹配,则将 newValue 写入 addr,即 if (*addr == compareValue) { *addr = newValue; }。
 您可以通过检查 rsAtomicCas() 返回的值是否为 compareValue 来检查值是否已写入。
   
 
  
    rsAtomicMax
    :线程安全最大值
  
  
  
  
  
 原子方式将 addr 处的值设置为 *addr 和值的最大值,即 *addr = max(*addr, value)。
   
 
  
    rsAtomicMin
    :线程安全最小值
  
  
  
  
  
 原子方式将 addr 处的值设置为 *addr 和值的最小值,即 *addr = min(*addr, value)。
   
 
  
    rsAtomicOr
    :线程安全按位或
  
  
  
  
  
 以原子方式执行一个按位值或两个值,并将结果存储在 addr 处,即 *addr |= value。
   
 
  
    rsAtomicSub
    :线程安全减法
  
  
      参数
    
    | addr | 要修改的值的地址。 | 
|---|
    | value | 要扣除的金额。 | 
|---|
    
   
  
  
 自动从 addr 处的值减去一个值,即 *addr -= value。
   
 
  
    rsAtomicXor
    :线程安全按位排除或
  
  
      参数
    
    | addr | 要修改的值的地址。 | 
|---|
    | value | 要执行异或运算的值。 | 
|---|
    
   
  
  
 以原子方式对两个值执行按位异或运算,并将结果存储在 addr 处,即 *addr ^= value。
   
 
 
  
  
  
    
  
 
  
    
      
      
    
    
      
    
    
  
       
    
    
      
    
  
  
  本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
  最后更新时间 (UTC):2025-07-27。
  
  
  
    
      [[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-07-27。"],[],[]]