初级会员
  • 第 42120 位会员
  • SamuelSue
  • 2019-08-27 14:00:33
  • Offline
  • 19 81

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • #1 @polaris 哦!!明白了,因为`resChan`的缓冲容量太少了,每个goroutine写满了`resChan`,要等待`<-resChan`,但是main goroutine的取出`resChan`没有机会执行,所以死锁了.
  • #1 @polaris 感谢回答,但是还是没太懂,要的效果就是让所有的`PrimeNum`执行完毕后(`exitChan写满`)然后再从`resChan`中取出结果数据。类似的思路是这样: ```go func main() { var exitChan = make(chan bool, 4) var resChan = make(chan int, 4) for i := 0; i < 4; i++ { go func(n int) { resChan <- n exitChan <- true }(i) } for i := 0; i < 4; i++ { fmt.Println(<-exitChan) // 等待4个goroutine退出 } close(resChan) for { // 读取resChan的数据 if res, ok := <-resChan; !ok { break } else { fmt.Println("res:", res) } } } ``` 这和那个求质数的思路是一样的,但是这样就不会报deadlock。