sync.atomic

原子操作:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何context switch (切换到另一个线程)。
对于一个整数类型Tsync/atomic标准包提供了下列原子操作函数。其中T可以是内置int32,int64,uint32,uint64uintptr

func AddT(addr *T, delta T)(new T)
func LoadT(addr *T) (val T)
func StoreT(addr *T, val T)
func SwapT(addr *T, new T) (old T)
func CompareAndSwapT(addr *T, old, new T) (swapped bool)

sync/atomic标准包也提供了Value类型。以它为基的指针类型*Value有两种方法:

func (v *Value) Load() (x interface{})
func (v *Value) Store(x interface{})
  • AddT
    对T类型的数据做原子的add操作。explame
package main

import (
	"fmt"
	"sync"
	"sync/atomic"
)

func main() {
	var num uint64
	var g sync.WaitGroup
	for i:=0 ; i < 10000; i++ {
		g.Add(1)
		go func() {
			defer g.Done()
			atomic.AddUint64(&num, 1)
		}()
	}
	g.Wait()
	fmt.Print(num)
}
  • Store and Load
    类似于get以及set操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值