关于 •
FAQ •
贡献者 •
晨读 •
Github •
新浪微博 •
Play •
免责声明 •
联系我们 •
捐赠 •
酷站 •
Feed订阅 •
24376 人在线
最高记录 5390
©2013-2025 studygolang.com Go语言中文网,中国 Golang 社区,致力于构建完善的 Golang 中文社区,Go语言爱好者的学习家园。
Powered by
StudyGolang(Golang + MySQL) • · CDN 采用
七牛云
VERSION: V4.0.0 · 20.336771ms · 为了更好的体验,本站推荐使用 Chrome 或 Firefox 浏览器
京ICP备14030343号-1
go run main.go v1.go v2.go
或者
go run *.go
或者go build,之后再运行
#19楼 <a href="/user/jarlyyn" title="@j...
不能期望所有goroutine按照期望的顺序执行代码。
就像你期望goroutine_01 使用countlocker 加锁进行 count--之前,另外一个goroutine_02能获取到coun...
sync.Mutex没有bug,是你的代码的bug。
我举的是只是例子而已。实际上有可能是两个goroutine,其中一个count--后从map删除Locker,之后又来一个goroutine获取...
你这个代码有bug:
我举一个极端的例子:
假设有10个并发传入了相同的key,其中
goroutine_01
先进行count++
并获取了Locker
结构体另外9个卡在了`l := ...
> 那就再加个计数,在计数为0后再delete元素就可以了
这个你不用channel的话,
counter++
counter--
if counter ==0
,等相关代码,没...看了下你这个代码,确实不能实现并发时同一个key加锁先后执行:
假设有10个并发同时调用
Locker("key1")
,然后其中一个执行完毕并调用`l.Map.Delete(l.K...第一次unlock后就释放整个key的锁: 有点类似cache,第一次取的时候缓存没有,需要加锁获取到缓存里,后续直接从缓存获取。可以参考The Go Programming Language的第9章...
切片背后是数组,数组长度是不变的,切片长度是可变的。
切片背后可以看作是结构体,包含三部分:(数组第一个元素地址,len,cap)
myTest := testList
这句话可以看作结构体的值...