原子操作

    1. package main
    2. import (
    3. "fmt"
    4. "sync"
    5. "sync/atomic"
    6. )
    7. func add() {
    8. atomic.AddInt64(&v,1)
    9. wg.Done()
    10. }
    11. var (
    12. v int64
    13. wg sync.WaitGroup
    14. )
    15. func main() {
    16. wg.Add(1000)
    17. for i := 0; i < 1000; i++ {
    18. go add()
    19. }
    20. wg.Wait()
    21. fmt.Println(v)
    22. //CAS 比较并修改
    23. atomic.CompareAndSwapInt64(&v,1000,1)
    24. fmt.Println(v)
    25. }