C++ 如何使用原子获取添加显式替换原子增量32?
我的应用程序中有这两行代码C++ 如何使用原子获取添加显式替换原子增量32?,c++,C++,我的应用程序中有这两行代码 volatile __block int32_t counter = 0; 后来在一个循环中 OSAtomicIncrement32(&counter); 但是现在,osatomiciincrement32被弃用了,Xcode向我显示了这个错误消息 “OsatomiciIncrement32”已弃用:在iOS 10.0中首次弃用- 从中使用原子获取添加显式(内存顺序) 反而 看到这个错误消息,有一个参数是要原子的\u fetch\u add\u expl
volatile __block int32_t counter = 0;
后来在一个循环中
OSAtomicIncrement32(&counter);
但是现在,osatomiciincrement32
被弃用了,Xcode向我显示了这个错误消息
“OsatomiciIncrement32”已弃用:在iOS 10.0中首次弃用-
从中使用原子获取添加显式(内存顺序)
反而
看到这个错误消息,有一个参数是要原子的\u fetch\u add\u explicit
,对吗
所以我试着
atomic_fetch_add_explicit(&counter)
我看到了这个信息
函数调用的参数太少,应为3,但有1
我喜欢Xcode转储的糟糕消息
我如何使用它?阅读。。。它使用指向目标变量的指针、要添加的数字(在您的例子中可能是1)和编译器建议的内存顺序,即内存\u顺序\u松弛
,可能与OSAtomicIncrement32
的现有行为相匹配
atomic_fetch_add_explicit(&counter, 1, memory_order_relaxed);
如果您不知道内存顺序是什么,那么最好使用具有“最安全”顺序的普通原子\u fetch\u add
atomic_fetch_add(&counter, 1);
上述的,如果你实际上是在C++中工作,并且这个变量只被你的代码使用,你可以使用一个<代码> STD::AddiICIONIT/<代码>(或<代码> STD::原子< /代码>如果你想要保证32位范围)和“平原<代码> ++< /Cord>运算符。< /P>
std::atomic_int counter{0};
//...
++counter;
只需使用
std::atomic
@SombreroChicken与int
相比,double
甚至ptrdiff
遗漏了什么?