Golang中的任务并发执行和Go WaitGroup

   2025-02-20 8720
核心提示:在Golang中,任务的并发执行可以通过goroutine和channel来实现。Goroutine是轻量级的线程,可以并发执行多个任务。Channel用于在

在Golang中,任务的并发执行可以通过goroutine和channel来实现。Goroutine是轻量级的线程,可以并发执行多个任务。Channel用于在不同的goroutine之间进行通信和数据传递。

首先,我们可以使用go关键字启动一个goroutine来并发执行一个函数。例如:

func main() {go myFunc()  // 启动一个goroutine并发执行myFunc函数// 其他的代码}func myFunc() {// 执行任务的逻辑}

如果我们有多个任务需要并发执行,但是又需要等待它们全部完成后再继续执行后续的代码,可以使用sync.WaitGroup来实现。WaitGroup是一个计数器,用于等待一组goroutine的完成。

import "sync"func main() {var wg sync.WaitGroupwg.Add(2)  // 设置需要等待的goroutine数量go myFunc1(&wg)  // 启动goroutine并发执行myFunc1函数go myFunc2(&wg)  // 启动goroutine并发执行myFunc2函数wg.Wait()  // 等待所有goroutine完成// 所有任务完成后继续执行后续的代码}func myFunc1(wg *sync.WaitGroup) {defer wg.Done()  // 任务完成时通知WaitGroup计数器减1// 执行任务1的逻辑}func myFunc2(wg *sync.WaitGroup) {defer wg.Done()  // 任务完成时通知WaitGroup计数器减1// 执行任务2的逻辑}

在每个任务的最后,我们使用defer关键字来调用wg.Done(),通知WaitGroup计数器减1。当计数器归零时,Wait方法就会返回,程序继续执行后续的代码。

通过使用goroutine和WaitGroup,我们可以实现任务的并发执行和等待。这样可以充分利用多核处理器的并行计算能力,提高程序的执行效率。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言