TA的每日心情 | 无聊 2019-4-21 13:02 |
---|
签到天数: 3 天 [LV.2]圆转纯熟
|
目录
一.序二. 源码分析
三. 使用场景案例
四.总结五. 参考
一.序
单从库名大概就能猜出其作用。sync.Once使用起来很简单, 下面是一个简单的使用案例- package main
- import (
- "fmt"
- "sync"
- )
- func main() {
- var (
- once sync.Once
- wg sync.WaitGroup
- )
- for i := 0; i < 10; i++ {
- wg.Add(1)
- // 这里要注意讲i显示的当参数传入内部的匿名函数
- go func(i int) {
- defer wg.Done()
- // fmt.Println("once", i)
- once.Do(func() {
- fmt.Println("once", i)
- })
- }(i)
- }
- wg.Wait()
- fmt.Printf("over")
- }
复制代码 输出:
|
|