码迷,mamicode.com
首页 > 其他好文 > 详细

sync.Mutex (对map加锁)

时间:2017-02-10 17:35:19      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:ref   并发   error:   技术分享   alt   ++   lan   运行   冲突   

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加锁)

标签:ref   并发   error:   技术分享   alt   ++   lan   运行   冲突   

原文地址:http://www.cnblogs.com/ahui2017/p/6385890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!