sync.Once 多次调用一次执行的方法
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容介绍了"sync.Once 多次调用一次执行的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2025年12月03日sync.Once 多次调用一次执行的方法
本篇内容介绍了"sync.Once 多次调用一次执行的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
demo
package mainimport ( "fmt" "sync")func main() { var once sync.Once onceFunc := func() { fmt.Println("this func do once") } done := make(chan bool) for i := 0; i < 10; i++ { go func() { once.Do(onceFunc) done <- true }() } for i := 0; i < 10; i++ { <-done }}output
liqiongtao:test liqiongtao$ go run main.go this func do once
Once源码
// Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package syncimport ( "sync/atomic")// Once is an object that will perform exactly one action.type Once struct { m Mutex done uint32}// Do calls the function f if and only if Do is being called for the// first time for this instance of Once. In other words, given// var once Once// if once.Do(f) is called multiple times, only the first call will invoke f,// even if f has a different value in each invocation. A new instance of// Once is required for each function to execute.//// Do is intended for initialization that must be run exactly once. Since f// is niladic, it may be necessary to use a function literal to capture the// arguments to a function to be invoked by Do:// config.once.Do(func() { config.init(filename) })//// Because no call to Do returns until the one call to f returns, if f causes// Do to be called, it will deadlock.//// If f panics, Do considers it to have returned; future calls of Do return// without calling f.//func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. o.m.Lock() defer o.m.Unlock() if o.done == 0 { defer atomic.StoreUint32(&o.done, 1) f() }}"sync.Once 多次调用一次执行的方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
方法
内容
更多
知识
实用
学有所成
接下来
困境
实际
情况
文章
案例
源码
编带
网站
行业
过程
高质量
学习
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
台北网络安全培训机构
网络管理与网络安全技术
烟草行业政策 网络安全
阿里云自带的服务器管理器
网络安全硕士属于计算机专业吗
qt清除数据库操作
关于网络安全教育的板报
投ACS数据库用什么浏览器
软件开发创新之处
数据填报系统软件开发
福建省网络安全竟赛
上海消防软件开发公司
网络安全 网络文明ppt
光通信与光网络技术排名
面试软件开发都要上机吗
note3媒体服务器
李欲晓网络安全
什么是不被信任的服务器证书
网络安全厂家排名2018
如何保护好家中的网络安全
济南兴业银行软件开发
日本站群服务器
数据库技术A2018年B劵
微软认证的软件开发工程师
基于网络安全的教学活动方案
手机无数据库
上海天沃网络技术有限公司
Pg数据库如何保留整数
测评数据库源码
软件开发格局已出现