• 2020-07-09 10:54:59 评论了主题 关于go执行报错

    go run main.go v1.go v2.go

    或者

    go run *.go

    或者go build,之后再运行

  • 2020-06-18 10:30:36 评论了主题 开发了一个基于key的加锁方案

    #19 <a href="/user/jarlyyn" title="@j...

  • 2020-06-17 16:38:28 评论了主题 开发了一个基于key的加锁方案

    不能期望所有goroutine按照期望的顺序执行代码。

    就像你期望goroutine_01 使用countlocker 加锁进行 count--之前,另外一个goroutine_02能获取到coun...

  • 2020-06-17 16:29:15 评论了主题 开发了一个基于key的加锁方案

    sync.Mutex没有bug,是你的代码的bug。

    我举的是只是例子而已。实际上有可能是两个goroutine,其中一个count--后从map删除Locker,之后又来一个goroutine获取...

  • 2020-06-17 13:59:09 评论了主题 开发了一个基于key的加锁方案

    你这个代码有bug:

    我举一个极端的例子:

    假设有10个并发传入了相同的key,其中goroutine_01先进行count++并获取了Locker结构体

    另外9个卡在了`l := ...

  • 2020-06-17 11:11:55 评论了主题 开发了一个基于key的加锁方案

    > 那就再加个计数,在计数为0后再delete元素就可以了

    这个你不用channel的话, counter++ counter-- if counter ==0,等相关代码,没...

  • 2020-06-17 11:01:03 评论了主题 开发了一个基于key的加锁方案

    看了下你这个代码,确实不能实现并发时同一个key加锁先后执行:

    假设有10个并发同时调用Locker("key1"),然后其中一个执行完毕并调用`l.Map.Delete(l.K...

  • 2020-06-17 10:39:10 评论了主题 开发了一个基于key的加锁方案

    第一次unlock后就释放整个key的锁: 有点类似cache,第一次取的时候缓存没有,需要加锁获取到缓存里,后续直接从缓存获取。可以参考The Go Programming Language的第9章...

  • 2020-06-16 10:17:34 评论了主题 切片的坑特别多

    切片背后是数组,数组长度是不变的,切片长度是可变的。

    切片背后可以看作是结构体,包含三部分:(数组第一个元素地址,len,cap)

    myTest := testList这句话可以看作结构体的值...