"sync"
"time"
)
// 模拟耗时操作,每个goroutine等待一秒钟
func doSomething(i int, wg *sy"> "sync"
"time"
)
// 模拟耗时操作,每个goroutine等待一秒钟
func doSomething(i int, wg *sy">
117.info
人生若只如初见

简单实用:Go WaitGroup的应用实例分享

WaitGroup是Go语言中的一个同步原语,用于等待一组goroutine的完成。

下面是一个简单的应用实例,演示了如何使用WaitGroup等待一组goroutine的完成:

package main
import (
"fmt"
"sync"
"time"
)
// 模拟耗时操作,每个goroutine等待一秒钟
func doSomething(i int, wg *sync.WaitGroup) {
defer wg.Done()
fmt.Printf("Goroutine %d start\n", i)
time.Sleep(time.Second)
fmt.Printf("Goroutine %d done\n", i)
}
func main() {
var wg sync.WaitGroup
// 启动5个goroutine
for i := 0; i < 5; i++ {
wg.Add(1)
go doSomething(i, &wg)
}
// 等待所有goroutine完成
wg.Wait()
fmt.Println("All goroutines done")
}

在上面的例子中,我们定义了一个doSomething函数来模拟耗时的操作。在main函数中,我们创建了一个WaitGroup,并在启动每个goroutine之前调用Add方法来增加计数器。

然后,每个goroutine执行doSomething函数,并在完成后调用Done方法来递减计数器。

最后,我们调用Wait方法来等待所有goroutine完成。一旦计数器归零,Wait方法将返回,程序继续执行。

运行上面的代码,你将看到类似以下的输出:

Goroutine 0 start
Goroutine 1 start
Goroutine 2 start
Goroutine 3 start
Goroutine 4 start
Goroutine 0 done
Goroutine 2 done
Goroutine 3 done
Goroutine 4 done
Goroutine 1 done
All goroutines done

从输出中可以看出,所有的goroutine都已经完成,并且在最后打印了"All goroutines done"。

通过使用WaitGroup,我们可以方便地等待一组goroutine的完成,从而控制程序的执行顺序和并发度。这在并发编程中是非常常见和实用的技术。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe378AzsLBANXBVE.html

推荐文章

  • golang底层是什么语言

    Go语言(也称为Golang)的底层主要是由C语言编写的,并且在后续的版本中,Go语言完成了语言自举,即使用Go语言自身来编写编译器。这使得Go语言的编译器和运行时环...

  • golang协程和线程的区别有哪些

    Golang协程(Goroutine)和线程的区别主要体现在以下几个方面: 轻量级:Golang的协程是由Golang运行时管理的,相较于操作系统级的线程,协程更轻量级,启动和销...

  • golang动态生成struct的方法是什么

    在Go语言中,可以使用reflect包来动态生成struct。下面是一个示例代码:
    package main
    import (
    "fmt"
    "reflect"
    )
    type Person ...

  • golang怎么爬取动态内容

    要爬取动态内容,你可以使用以下几种方法:1. 使用headless浏览器:可以使用一些基于Chrome或Firefox的headless浏览器库,如Puppeteer或Selenium。这些库可以模拟...

  • 通过golang进行Select Channels Go并发式编程的错误处理方法

    在Go并发式编程中,可以使用select语句来同时监听多个通道的数据流动,并根据不同的情况进行处理。当一个或多个通道有数据可读时,select语句会随机选择一个case...

  • 多核处理:使用Go WaitGroup实现Golang并发计算

    使用Go语言的WaitGroup可以很方便地实现并发计算的多核处理。下面是一个示例代码,演示了如何使用WaitGroup实现并发计算。
    package main
    import (

  • 深入剖析Go语言的垃圾回收器管理原理

    Go语言的垃圾回收器(Garbage Collector,简称GC)是一种自动内存管理机制,用于回收不再使用的内存对象,以减轻程序员的负担。
    Go语言的垃圾回收器采用的是...

  • 利用Golang和FFmpeg实现视频拼接的实践

    实现视频拼接的实践可以分为以下几个步骤: 安装FFmpeg:首先需要在计算机上安装FFmpeg,可以从官方网站(https://ffmpeg.org/)下载对应的二进制文件并进行安装...