Sev*_*ves 3 c++ atomic compare-and-swap c++11
a = b如果条件c成立,我需要自动分配,如果条件不成立,则不分配.有没有办法在C/C++中做到这一点?
澄清:我的意思是原子地"测试和分配",而不是"原子分配".
没有一个操作可以完成您一般所需的操作.如果您的条件测试if 已经设置为某个特定值,则涵盖的常见情况.在这种情况下,您需要的操作是比较和交换,例如:ca
std::atomic<int> value;
...
int expected = 9;
bool result = std::atomic_compare_exchange_strong(&value, &expected, 10);
Run Code Online (Sandbox Code Playgroud)
value仅当条件value == 9成立时,此处设置为10 ,整个操作是原子操作.
如果你的条件不采用这种形式,那么你必须使用互斥(或其他一些多操作机制)来实现原子性.