不sleep会卡住,执行不下去,为什么呢

gaohuag · · 862 次点击
在singleflight.go中func Do中对map key做了删除,如果不sleep,goruntine1 中执行fn获取了chan c的"bar", 然后删除"key"后,goruntine2 抢到锁发现map中没有"key" 会再次执行fn ,chan c 已无数据输入 ;如果sleep, goruntine1 执行fn时等待chan c的输入数据,阻塞,不会删除"key" ,其他几个 goruntine 也会发现map中有"key",所以test pass
#1