【发布时间】:2018-09-13 20:39:06
【问题描述】:
func First(query string, replicas ...Search) Result {
c := make(chan Result)
searchReplica := func(i int) {
c <- replicas[i](query)
}
for i := range replicas {
go searchReplica(i)
}
return <-c
}
这个函数来自 Rob Pike 在 2012 年关于 go concurrency patterns 的幻灯片。我认为这个函数存在资源泄漏。由于函数在通道 c 上发生第一个发送和接收对后返回,其他 go 例程尝试在通道 c 上发送。所以这里存在资源泄漏。任何人都知道golang可以证实这一点?以及如何使用哪种 golang 工具检测这种泄漏?
【问题讨论】:
标签: go concurrency channel goroutine