📌  相关文章
📜  Golang 中的 atomic.AddInt64()函数示例(1)

📅  最后修改于: 2023-12-03 14:41:33.566000             🧑  作者: Mango

Golang 中的 atomic.AddInt64()函数示例

在 Go 语言中,我们可以使用 atomic 包提供的相关函数来实现原子操作,其中 atomic.AddInt64() 函数用于原子性地增加 int64 类型的值。

函数原型
func AddInt64(addr *int64, delta int64) (new int64)
参数说明

AddInt64() 函数有两个参数。

  • addr:指向要增加的 int64 类型值的指针。
  • delta:要增加的 int64 类型的值。
返回值

该函数返回一个 int64 类型的值,表示增加后的结果。

示例

下面是一个简单的示例,展示了如何使用 AddInt64() 函数。

package main

import (
    "fmt"
    "sync/atomic"
)

func main() {
    var num int64 = 0

    // 调用 AddInt64() 函数,原子性地将 num 的值增加 1。
    newNum := atomic.AddInt64(&num, 1)

    fmt.Println("num 的原始值为:", num)    // 输出:num 的原始值为: 1
    fmt.Println("num 增加后的值为:", newNum)    // 输出:num 增加后的值为: 1

    // 再次调用 AddInt64() 函数,原子性地将 num 的值增加 3。
    newNum = atomic.AddInt64(&num, 3)

    fmt.Println("num 的原始值为:", num)    // 输出:num 的原始值为: 4
    fmt.Println("num 增加后的值为:", newNum)    // 输出:num 增加后的值为: 4
}

在这个示例中,我们首先定义了一个 int64 类型的变量 num,并将其初始化为 0。接着,我们调用了 AddInt64() 函数两次,第一次将 num 的值增加 1,第二次将其增加 3。在每一次调用 AddInt64() 函数之后,我们都输出了 num 的原始值和增加后的值。

值得注意的是,在上面的示例中,我们需要将 num 的地址传递给 AddInt64() 函数,因为这个函数需要直接修改变量的值,而不是仅仅返回一个新值。如果我们仅仅是希望增加一个值并将结果重新赋给一个变量,可以使用其他的函数,例如 atomic.LoadInt64()atomic.StoreInt64()。如果需要原子性地进行其他类型的操作,可以参考 atomic 包中的其他函数。