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 官宣新年祝福语简短