我正在尝试解决这个 golang 练习https://github.com/loong/go-concurrency-exercises/tree/master/1-producer-consumer。我想我已经接近解决方案了,但是我遇到了死锁错误davecheney tweets about golangbeertocode does not tweet about golangironzeb tweets about golangbeertocode tweets about golangvampirewalk666 tweets about golangfatal error: all goroutines are asleep - deadlock!这是我的代码func producer(stream Stream) (tweets []*Tweet) { for { tweet, err := stream.Next() if err == ErrEOF { return tweets } tweets = append(tweets, tweet) }}func consumer(tweets []*Tweet) { for _, t := range tweets { if t.IsTalkingAboutGo() { fmt.Println(t.Username, "\ttweets about golang") } else { fmt.Println(t.Username, "\tdoes not tweet about golang") } }}func main() { start := time.Now() stream := GetMockStream() data := make(chan []*Tweet) var wg sync.WaitGroup wg.Add(3) // Producer go func() { tweets := producer(stream) data <- tweets }() // Consumer go func() { defer wg.Done() tweets := <-data consumer(tweets) }() wg.Wait() fmt.Printf("Process took %s\n", time.Since(start))}你的解决方案在哪里失败?
- 1 回答
- 0 关注
- 75 浏览
添加回答
举报
0/150
提交
取消