咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 344|回复: 0

[Golang] Go并发编程之sync.Once使用实例详解

[复制链接]
  • TA的每日心情
    无聊
    2019-4-21 13:02
  • 签到天数: 3 天

    [LV.2]圆转纯熟

    发表于 2021-12-31 22:07:22 | 显示全部楼层 |阅读模式
    目录

      一.序二. 源码分析
        2.1结构体2.2 接口
      三. 使用场景案例
        3.1 单例模式3.2 加载配置文件示例
      四.总结五. 参考


    一.序

    单从库名大概就能猜出其作用。sync.Once使用起来很简单, 下面是一个简单的使用案例
    1. package main
    2. import (
    3.         "fmt"
    4.         "sync"
    5. )
    6. func main() {
    7.         var (
    8.                 once sync.Once
    9.                 wg   sync.WaitGroup
    10.         )
    11.         for i := 0; i < 10; i++ {
    12.                 wg.Add(1)
    13.                 // 这里要注意讲i显示的当参数传入内部的匿名函数
    14.                 go func(i int) {
    15.                         defer wg.Done()
    16.                         // fmt.Println("once", i)
    17.                         once.Do(func() {
    18.                                 fmt.Println("once", i)
    19.                         })
    20.                 }(i)
    21.         }
    22.         wg.Wait()
    23.         fmt.Printf("over")
    24. }
    复制代码
    输出:

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 00:48

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表