在线程组内存中atomic_fetch_add_explicit是原子的吗?

时间:2016-03-01 00:21:33

标签: ios atomic metal threadgroup

Metal计算内核中的以下代码片段表明atomic_fetch_add_explicit在线程组内存中没有原子读取 - 修改 - 写入。

i的值在线程组中并不像我预期的那样唯一。

我用错了吗?

threadgroup atomic_int index;  
atomic_store_explicit( &index, 0, memory_order_relaxed );  
threadgroup_barrier( mem_flags::mem_none );  
int i = atomic_fetch_add_explicit( &index, 1, memory_order_relaxed );  

1 个答案:

答案 0 :(得分:2)

这确实是正确的,并且按预期原子地运行。 我的代码中的错误是验证i的唯一性。