runtime: fix multi chan recv/send select

This commit is contained in:
visualfc
2024-09-11 16:06:52 +08:00
parent 3c588e67b8
commit aa33ddcf19
3 changed files with 421 additions and 13 deletions

30
cl/_testgo/selects/in.go Normal file
View File

@@ -0,0 +1,30 @@
package main
func main() {
c1 := make(chan struct{}, 1)
c2 := make(chan struct{}, 1)
c3 := make(chan struct{}, 1)
c4 := make(chan struct{}, 1)
go func() {
<-c1
println("<-c1")
select {
case c2 <- struct{}{}:
println("c2<-")
case <-c3:
println("<-c3")
}
}()
c1 <- struct{}{}
println("c1<-")
select {
case <-c2:
println("<-c2")
case <-c4:
println("<-c4")
}
}