快速响应:Go WaitGroup在高并发场景下的应用

30次阅读
没有评论

共计 661 个字符,预计需要花费 2 分钟才能阅读完成。

在高并发场景下,Go 的 WaitGroup 是一种有效的工具,用于等待一组 goroutine 完成其任务。
WaitGroup 有三个方法可以使用:

  • Add(n int):表示等待的 goroutine 数量增加 n。
  • Done():表示等待的 goroutine 数量减少 1。
  • Wait():阻塞等待,直到等待的 goroutine 数量为 0。

下面是一个使用 WaitGroup 的示例代码,在高并发场景下,使用 goroutine 处理任务,并使用 WaitGroup 等待所有 goroutine 完成:

package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 10; i++ {wg.Add(1)
go func(n int) {defer wg.Done()
time.Sleep(time.Second) // 模拟任务处理时间
fmt.Printf("Task %d completed\n", n)
}(i)
}
wg.Wait() // 等待所有任务完成
fmt.Println("All tasks completed")
}

在上面的代码中,我们创建了 10 个 goroutine 来处理任务。每个 goroutine 在完成任务后,调用 Done() 方法来减少等待的 goroutine 数量。最后,调用 Wait() 方法来阻塞等待,直到所有 goroutine 完成任务。
通过使用 WaitGroup,我们可以保证在高并发场景下,所有的 goroutine 都能够完成任务后再执行后续的操作。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-13发表,共计661字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)