美文网首页
golang中等待所有goroutine执行完成.

golang中等待所有goroutine执行完成.

作者: trump2018 | 来源:发表于2019-06-17 10:38 被阅读0次

golang中,创建一个channel并开始执行后便脱离了主程序控制,那么,类似于其他语言中, 多线程中的每个线程join到主线程,golang中 如何等待所有的 goroutine 都执行完毕?
查了下大概这个样子.

  • 用 channel 进行同步
func main() {
    ch := make(chan int, 2)
    go func() {
        for i := 0; i < 10; i++ {
            time.Sleep(1 * time.Second)
            fmt.Println("go routine1", i)
        }
        ch <- 1
    }()
    go func() {
        for i := 0; i < 10; i++ {
            time.Sleep(1 * time.Second)
            fmt.Println("go routine2", i)
        }
        ch <- 2
    }()

    for i := 0; i < 2; i++ {
        <-ch
    }
    fmt.Println("main exit")
}
  • sync.WaitGroup
    官方推荐方法,不需要知道 gotoutine 的个数

import "fmt"
import "time"
import "sync"

func main() {
    var wg sync.WaitGroup

    for i := 0; i < 10; i++ {
        wg.Add(1)
        go func(i int) {
            defer wg.Done()
            time.Sleep(1 * time.Second)
            fmt.Println(i)
        }(i)
    }
    wg.Wait() // 等待
    fmt.Println("main exit")
}

以上.

相关文章

  • golang中等待所有goroutine执行完成.

    golang中,创建一个channel并开始执行后便脱离了主程序控制,那么,类似于其他语言中, 多线程中的每个线程...

  • golang sync WaitGroup

    简介 它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。...

  • go学习笔记(四)——并发

    1. goroutine 什么是goroutine goroutine是golang的最小执行单元,每个go程序至...

  • Go 优雅的退出程序

    前言:在实际开发中,有时候我们需要等待某个goroutine执行完毕或者几个goroutine执行完毕才退出主程序...

  • Go goroutine

    Golang特色之一是支持高并发编程模型,以Goroutine作为基本的并发执行单元。 Goroutine是轻量级...

  • golang workpool , 工作池

    gowp golang worker pool ,线程池 , 工作池 并发限制goroutine池。 限制任务执行...

  • goroutine 及channel

    本文主要介绍goroutine 和channel的使用。 基础知识介绍 goroutine 是 golang 中在...

  • go waitgroup

    waitgroup等待一组grroutine完成 主goroutine调用Add来设置需要等待的goroutine...

  • golang 基础(22)WaitGroup

    waitGroup 从字面上来看是等待组,好处是主线程的退出或执行需要其之前所有 goroutine 执行完毕才回...

  • go 等待所有 goroutine 执行结束的方法

    通常我们在 main 中需要等待所有的 goroutine 都执行完毕时再退出一般有两种方法方法一大家都能想到用 ...

网友评论

      本文标题:golang中等待所有goroutine执行完成.

      本文链接:https://www.haomeiwen.com/subject/nmbofctx.html