首页 > 代码库 > sync.Mutex (对map加锁)
sync.Mutex (对map加锁)
A Tour of Go
concurrency >> sync.Mutex
https://tour.golang.org/concurrency/9
golang 里的 map 并不是 concurrency-safe 的,也就是说,当多个 goroutine 对同一个 map 进行操作时,有可能发生冲突。
教程中给出了一个例子,对 map 加锁避免冲突:
其中,如果把 go c.Inc("somekey") 改成
go func() { c.v["somekey"]++ }()
也就是说改成不锁map的方式,那么,运行时会发生错误,显示如下错误信息:
fatal error: concurrent map writes
注意,加锁后,虽然发起了多个 goroutine, 但由于有锁,只能一个一个依次执行,因此,在 Lock() 与 Unlock() 之间的代码将失去并发(concurrency)的意义。
sync.Mutex (对map加锁)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。