golang 原子加减
时间: 2023-09-30 18:04:17 浏览: 131
golang的ECB加解密模块
在Go语言中,可以使用atomic包来进行原子加减操作。具体的原子加减操作函数如下:
1. 原子加法操作:
```go
func AddInt32(addr *int32, delta int32) (new int32)
func AddInt64(addr *int64, delta int64) (new int64)
```
示例代码:
```go
package main
import (
"fmt"
"sync/atomic"
)
func main() {
var counter int64
// 原子加法操作
atomic.AddInt64(&counter, 5)
fmt.Println("counter:", counter) // 输出:counter: 5
// 原子减法操作
atomic.AddInt64(&counter, -3)
fmt.Println("counter:", counter) // 输出:counter: 2
}
```
2. 原子减法操作:
```go
func AddUint32(addr *uint32, delta uint32) (new uint32)
func AddUint64(addr *uint64, delta uint64) (new uint64)
```
示例代码:
```go
package main
import (
"fmt"
"sync/atomic"
)
func main() {
var counter uint64
// 原子加法操作
atomic.AddUint64(&counter, 5)
fmt.Println("counter:", counter) // 输出:counter: 5
// 原子减法操作
atomic.AddUint64(&counter, ^uint64(3-1))
fmt.Println("counter:", counter) // 输出:counter: 2
}
```
需要注意的是,原子操作只能用于特定的数据类型,如int32、int64、uint32、uint64等。在进行原子操作时,建议使用指针来传递需要操作的变量地址。
阅读全文