Golang atomic.CompareAndSwapUintptr()函数及其例子
在Go语言中,atomic包提供了更低层次的原子内存,有助于实现同步算法。Go语言中的 CompareAndSwapUintptr() 函数用于对uintptr值执行比较和交换操作。此函数在atomic包中定义。在这里,您需要导入”sync/atomic”包以使用这些函数。
语法:
在这里,addr表示地址,old表示旧的uintptr值,new是将自身从地址addr存储的旧值中交换出的uintptr新值。
注意:(*uintptr)是指向uintptr值的指针。而uintptr是一个无符号整数类型,它太大了,包含任何指针的位模式。
返回值:如果交换成功,则返回true,否则返回false。
示例1:
输出:
示例2:
输出:
在此例中,交换操作获取的交换后的值必须是CompareAndSwapUintptr()方法的旧值,但是在这里,取的是交换操作的旧值,这不正确,因此返回false。
极客教程