主题
文章
项目
资源
图书
Go网址导航
下载
官方文档
英文文档
中文文档
标准库中文版
Go指南
注册
登录
首页
全部评论
评论了
主题
关于go执行报错
go run main.go v1.go v2.go 或者 go run *.go 或者go build,之后再运行
查看详情
评论了
主题
开发了一个基于key的加锁方案
<a href="/topics/11704#comment19" title="19">#19<span>楼</span></a> <a href="/user/jarlyyn" title="@j...
查看详情
评论了
主题
开发了一个基于key的加锁方案
不能期望所有goroutine按照期望的顺序执行代码。 就像你期望goroutine_01 使用countlocker 加锁进行 count--之前,另外一个goroutine_02能获取到coun...
查看详情
评论了
主题
开发了一个基于key的加锁方案
sync.Mutex没有bug,是你的代码的bug。 我举的是只是例子而已。实际上有可能是两个goroutine,其中一个count--后从map删除Locker,之后又来一个goroutine获取...
查看详情
评论了
主题
开发了一个基于key的加锁方案
你这个代码有bug: 我举一个极端的例子: 假设有10个并发传入了相同的key,其中`goroutine_01`先进行`count++`并获取了`Locker`结构体 另外9个卡在了`l := ...
查看详情
评论了
主题
开发了一个基于key的加锁方案
> *那就再加个计数,在计数为0后再delete元素就可以了* 这个你不用channel的话, `counter++` `counter--` `if counter ==0`,等相关代码,没...
查看详情
评论了
主题
开发了一个基于key的加锁方案
看了下你这个代码,确实不能实现并发时同一个key加锁先后执行: 假设有10个并发同时调用`Locker("key1")`,然后其中一个执行完毕并调用`l.Map.Delete(l.K...
查看详情
评论了
主题
开发了一个基于key的加锁方案
第一次unlock后就释放整个key的锁: 有点类似cache,第一次取的时候缓存没有,需要加锁获取到缓存里,后续直接从缓存获取。可以参考The Go Programming Language的第9章...
查看详情
评论了
主题
切片的坑特别多
切片背后是数组,数组长度是不变的,切片长度是可变的。 切片背后可以看作是结构体,包含三部分:(数组第一个元素地址,len,cap) `myTest := testList`这句话可以看作结构体的值...
查看详情
用户登录
记住登录状态
没有账号?
注册
忘记密码?
或
GitHub 登录
Gitea 登录
Go今日面试题
X
登录和大家一起探讨吧
用户名
密码
记住登录状态
登录
GitHub 登录
忘记密码?
还不是会员
现在注册
用户登录