package main
import (
"fmt"
"sync"
)
//原子操作
var x int64
var wg sync.WaitGroup
var lock sync.Mutex
func add(){
lock.Lock()
x++
lock.Unlock()
wg.Done()
}
func main() {
wg.Add(100000)
for i := 0; i < 100000; i++ {
go add()
}
wg.Wait()
fmt.Println(x)
}
并发多个goroutine时,加锁开销性能大,并发安全,不加锁并发不安全
func add(){
// lock.Lock()
// x++
// lock.Unlock()
atomic.AddInt64(&x, 1)
wg.Done()
}
并发安全,开销性能小