main函数中如何等待协程运行完毕

Posted linyihai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了main函数中如何等待协程运行完毕相关的知识,希望对你有一定的参考价值。

使用channel同步

package main
import (
    "fmt"
)

func printNumber(num int, c chan struct{}) {
  fmt.Println(num)
  c <- struct{}{}
}

func main() {
  sign := make(chan struct{}, 10)
  for i:=0;i<10;i++ {
    go printNumber(i, sign)
  }
  for i:=0;i<10;i++{
    <-sign
  }
  fmt.Println("Done.")
}

使用sync.WaitGroup

package main
import (
    "fmt"
    "sync"
)

func printNumber(num int, callback func()) {
  fmt.Println(num)
  callback()
}

func main() {
  var wg sync.WaitGroup
  wg.Add(10)
  for i:=0;i<10;i++ {
    go printNumber(i, wg.Done)
  }
  wg.Wait()
  fmt.Println("Done.")
}

以上是关于main函数中如何等待协程运行完毕的主要内容,如果未能解决你的问题,请参考以下文章

Python 37 进程池与线程池 协程

go 主协程等待子协程执行完毕再执行方法

go 主协程等待子协程执行完毕再执行方法

go 主协程等待子协程执行完毕再执行方法

Kotlin协程基础

kotlin协程