非缓冲通道死锁的问题:fatal error: all goroutines are asleep - deadlock!
问题描述
非缓冲通道不是说发数据的时候,得有配对的接收者吗。
往通道发送了1,test里接收,然后再发送。
然后怎么死锁了
代码
package main
import (
"fmt"
"sync"
)
var b = 1
var aa sync.WaitGroup
func main() {
aa.Add(2)
ba := make(chan int)
go test(ba)
go test(ba)
ba <- 1
aa.Wait()
}
func test(ba chan int) {
value := <-ba
fmt.Println(value)
b++
ba <- b
defer aa.Done()
}
运行结果
1
2
fatal error: all goroutines are asleep - deadlock!