go通过Mutex实现互斥锁(Mutex原理)

go通过Mutex实现互斥锁(Mutex原理),第1张

go通过Mutex实现互斥锁(Mutex原理)

在 Go 语言里通过 Mutex实现互斥锁

Mutex接口定义
type Locker interface {
    Lock()  //加锁
    Unlock()  //释放锁
}
Mutex原理 1、原理图说明

2、只有一个协程在抢锁

3、协程解锁

4、协程1加锁释放,协程2抢锁成功

以下是通过Mutex实现的加锁
 
var lock sync.Mutex
//对i初始是0
var i int = 0
func add() {
	//等同于wg.add(-1)
	defer wg.Done()
	//加锁
	lock.Lock()
	i += 1
	fmt.Printf("add:%v n", i)
	time.Sleep(time.Microsecond * 5)
	//释放互斥锁
	lock.Unlock()
}

运行一下


如果不加锁,那么结果很可能不是0

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存