【发布时间】:2021-07-07 10:49:00
【问题描述】:
我的解决方案如下,但以下代码中是否存在竞争条件(它会恐慌)吗?
c := make(chan struct{})
for i := 0; i < 1000000; i++ {
go func() {
select {
case <-c:
default:
close(c)
}
}()
}
我会假设是的,但是 go test -race 没有检测到它,并且凭经验我无法让它恐慌。
【问题讨论】:
-
这可能会多次关闭频道,是的。
标签: go concurrency channel goroutine