多协程的好处 比如,此时有一个任务 我们手动加了耗时操作,我们使用正常的方式来进行获取。 这样下来运行的耗时是需要 2s 多一点的。 初级版本 我们接下来使用sync.WaitGroup + goroutine 来优化 这样,使用了协程 来处理之后,耗时变成了501.338458ms 再次优化,我们可以加上channel 这样也会得到以下结果 优雅版本 优雅
2022年6月24日
案例
package main
import (
"fmt"
"sync"
)
// 多个goroutine并发操作全局变量x
var (
x int64
wg sync.WaitGroup
)
func add() {
for i := 0; i < 5000; i++ {
// 1. 拿到全局变量x
// 2. 给这个值+1
// 3. 加1后在赋值给全局变量x
x++ // 对全局变量进行每次+1
}
wg.Done()
}
func main() {
wg.Add(2)
go add()
go add()
wg.Wait()
fmt.Println(x) // 7180 5285 各种值
}