Golang atomic.SwapUint64()函数及示例

Golang atomic.SwapUint64()函数及示例

在Go语言中,原子包提供了较低级别的原子内存,有助于实现同步算法。在Go语言中, SwapUint64() 函数用于将新值原子存储到addr中,并返回先前的addr值。此函数在原子包中定义。在此,您需要导入“sync/atomic”包以使用这些函数。

语法:

func SwapUint64(addr *uint64, new uint64) (old uint64)

这里,addr表示地址。new是新的uint64值,old是旧的uint64值。

注意:(*uint64)是指向uint64值的指针。而uint64是一个64位大小的整数类型。但是,uint64包含从0到18446744073709551615的所有无符号64位整数的集合。

返回值:它将新的uint64值存储在addr中,并返回先前的addr值。

示例1:

//演示在Golang中使用SwapUint64函数的方法
//包括主函数
package main

//导入fmt和sync/atomic
import (
    "fmt"
    "sync/atomic"
)

//主函数
func main() {

    //为uint64分配值
    var x uint64 = 10864545453

    //使用SwapUint64方法
    //with其参数
    var old_val = atomic.SwapUint64(&x;, 65353443)

    //打印新旧值
    fmt.Println("Stored new value: ",
         x, ", Old value: ", old_val)
} 

输出:

Stored new value:  65353443,Old value:  10864545453

示例2:

//示例:在Golang中使用SwapUint64函数
//包括主函数
package main

//导入fmt和sync/atomic
import (
    "fmt"
    "sync/atomic"
)

//主函数
func main() {

    //为uint64分配值
    var m uint64 = 11735344343
    var n uint64 = 976364747

    //使用SwapUint64方法
    //与其参数一起
    var oldVal1 = atomic.SwapUint64(&m;, 11735344343)
    var oldVal2 = atomic.SwapUint64(&n;, 6586850111)

    //打印输出
    fmt.Println((oldVal1) == m)
    fmt.Println((oldVal2) == n)
} 

输出:

true
false

在这里,oldVal1等于“m”,因为要存储在*addr中的新值与旧值相同,因此返回true,但是oldVal2不等于“n”,因为旧值与新分配的值不相同,因此返回false。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程