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 周年庆典祝福语致辞简短