golang – waitgroup用法示例

最近的博客会陆续写一些Golang的简单内容,分享一些常见的用法和经验。

今天要写的就是并发任务处理。

在Golang中经常需要并发处理N个任务并且等待全部完成,这时候可以优先考虑使用Golang提供的WaitGroup库解决。

基本用法

下面是一个基本示例,在启动并发处理之前Add(1)增加任务计数,在任务处理完成后调用Done()方法减少任务计数,启动所有的任务后调用Wait()等待计数减少为0。

但是通常来说,主协程和并发协程之间要有数据往来,所以说WaitGroup通常要与闭包函数结合起来用,以便得到并发协程的处理结果。

下面我举一个简单例子。

结合闭包

为了收集并发协程的处理结果,我模拟创建了一个bool数组,由各个协程直接保存各自结果到对应下标。

最后Wait()返回后说明所有协程均已退出,此时就可以放心的打印result结果数组了。

 

 

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~