我目前正在学习并发。我编写了一个简单的测试程序来练习 goroutines。但是每当我执行此操作时,我都会收到一条错误消息,指出fatal error: all goroutines are asleep - deadlock!我不知道我做错了什么。有谁知道我如何使这项工作按预期进行。任何帮助都感激不尽
import (
"fmt"
"sync"
"time"
)
func slow(i int, cha chan int, wg *sync.WaitGroup) {
fmt.Println("HI", i)
time.Sleep(time.Second * 2)
cha <- i * 2
wg.Done()
}
func main() {
var wg sync.WaitGroup
values := make(chan int)
for i := 1; i < 12; i++ {
wg.Add(1)
go slow(i, values, &wg)
}
wg.Wait()
close(values)
}
编辑:当我尝试将通道设置为缓冲通道时,它可以工作。我不知道怎么
qq_遁去的一_1
相关分类