我创建了一个Go 操场示例来说明我在说什么。
在示例中,我创建了一个 goroutine,func2,我只想通过它的通道等待输入,并在它到达后打印值。
func func2(ch chan int) {
fmt.Println("func2")
v:=<-ch
fmt.Println(v)
}
然后,在一个循环中,我为另一个函数创建 goroutine,这些是 WaitGroup 的一部分。
func func1(ch chan int, wg *sync.WaitGroup) {
fmt.Println("func1")
ch <- 11032
wg.Done()
}
总的来说,我等待 WaitGroup。我遇到了僵局,我不知道如何解决它。很清楚我想要实现的目标,我希望 func2 在我调用它后作为线程保持打开状态,以处理 n 个值,其中 n 是我为 func1 调用的 goroutine 的数量。我考虑在 func2 中使用 WaitGroup Wait,但我不希望它阻塞,因为它需要在 func1 发送时处理新数据。
梵蒂冈之花
蝴蝶不菲
相关分类