golang怎么协调并发协程的调度

题目来源: 百度

答案:

使用channel+waitgroup协调并发的调度

  1. func main(){
  2. ch := make(chan int)
  3. var wg sync.WaitGroup
  4. wg.Add(2)
  5. go func() {
  6. defer wg.Done()
  7. for i := 1; i < 10; i++ {
  8. ch <- i
  9. }
  10. close(ch)
  11. }()
  12. go func() {
  13. defer wg.Done()
  14. for v := range ch {
  15. fmt.Println(v)
  16. }
  17. }()
  18. wg.Wait()
  19. }