sync.Once 多次调用一次执行的方法
发表于:2024-10-26 作者:千家信息网编辑
千家信息网最后更新 2024年10月26日,本篇内容介绍了"sync.Once 多次调用一次执行的方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2024年10月26日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安全错误
数据库的锁怎样保障安全
数据库本地安全策略
服务器会一直保存我们的信息吗
四川高校日志审计服务器
去银行搞软件开发
mvc数据库怎么更新数据
桂林云翔网络技术有限公司
华顺网络安全中心
网络安全像什么
运输软件开发
软件开发天才
dhcp服务器高可用
rds数据库规范
公安部网络安全邹勇
用ei表达式实现数据库查询
cs1.6服务器防刷出
asp数据库查询后更新
亳州保险软件开发哪家好
二维码查询服务器
哈密软件开发市场价
网络安全勘察
email服务器下载
软件开发和软件测试都采用
服务器f8进不去安全模式
戴尔网络安全股份
职业认证高级软件开发工程师
备份数据库的四种备份方式
aix 服务器
orcal的数据库口令
数据库管理系统常用的类型
山西信息化软件开发推广