Go 互斥锁
示例
Go中的互斥锁可让您确保一次只有一个goroutine具有锁:
import "sync"
func mutexTest() {
lock := sync.Mutex{}
go func(m *sync.Mutex) {
m.Lock()
defer m.Unlock() //此功能返回时自动解锁
//做些事
}(&lock)
lock.Lock()
//做其他事情
lock.Unlock()
}使用aMutex可以避免争用条件,并发修改以及与在同一资源上运行的多个并发例程相关的其他问题。请注意,它可以由任何例程执行,而不仅仅是获得锁定的例程。还要注意,如果另一个例程持有该锁,则对to的调用不会失败;它将一直阻塞,直到释放锁为止。Mutex.Unlock()Mutex.Lock()
提示:每当将Mutex变量传递给函数时,始终将其作为指针传递。否则,将为您的变量创建一个副本,这违反了Mutex的目的。如果您使用的是较旧的Go版本(<1.7),则编译器不会就此错误警告您!
热门推荐
10 情侣祝福语古文简短独特
11 酒店伴娘祝福语简短
12 晚上甜蜜的祝福语简短
13 给新娘简短的祝福语
14 当爸爸的简短祝福语
15 洛宁新年祝福语大全简短
16 新年祝福语简短搞笑幽默
17 结婚祝福语大全简短霸气
18 新人结婚祝福语简短高端