asm volatile("lock cmpxchg %[new], %[ptr]" :"+a"(expected), [ptr] "+m"(*addr) :[new] "r"(new_value) :"memory"); 在Intel X86-64架构中,cmpxchg指令用于比较与置换指定的地址与值。它先比较地址addr中存储的值与寄存器%eax中的值,如果相等则将new_value存入地址addr中,否则将addr中存储的数据读入寄存器%eax中。通过给这条指令加上lock前缀,Intel处理器可以保证上述比较与置换操作的原子性。
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务