PHP
·
发表于 5年以前
·
阅读量:8296
atomic是最轻量级的锁,在一些场景下直接使用atomic包还是很有效的。
原子操作共有5种,即:增或减、比较并交换、载入、存储和交换,如下代码是使用atomic
进行这一系列原子操作。
package main
import (
"fmt"
"sync/atomic"
"time"
)
func main() {
var (
total int32 = 0
)
for i := 0; i < 10; i++ {
go func() {
for {
atomic.AddInt32(&total, 1)
time.Sleep(time.Millisecond)
}
}()
}
time.Sleep(time.Second)
fmt.Println("before atomic.Store, the value is : ", total)
atomic.StoreInt32(&total, 100)
fmt.Println("finally total is : ", atomic.LoadInt32(&total))
}