Lv.的博客

sync.Once.Do(f func())

sync.Once.Do(f func())是一个挺有趣的东西,能保证once只执行一次,无论你是否更换once.Do(xx)这里的方法,这个sync.Once块只会执行一次。

 

  1. package main  
  2.   
  3. import (  
  4.     "fmt"  
  5.     "sync"  
  6.     "time"  
  7. )  
  8.   
  9. var once sync.Once  
  10.   
  11. func main() {  
  12.   
  13.     for i, v := range make([]string, 10) {  
  14.         once.Do(onces)  
  15.         fmt.Println("count:", v, "---", i)  
  16.     }  
  17.     for i := 0; i < 10; i++ {  
  18.   
  19.         go func() {  
  20.             once.Do(onced)  
  21.             fmt.Println("213")  
  22.         }()  
  23.     }  
  24.     time.Sleep(4000)  
  25. }  
  26. func onces() {  
  27.     fmt.Println("onces")  
  28. }  
  29. func onced() {  
  30.     fmt.Println("onced")  
  31. }  

整个程序,只会执行onces()方法一次,onced()方法是不会被执行的。

posted @   Avatarx  阅读(841)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2016-03-17 mysql导出excel文件的几种方法
2016-03-17 QT连接多种数据库f方法及测试
2015-03-17 html css
2015-03-17 java.lang.OutOfMemoryError: Java heap space错误及处理办法
2015-03-17 java中Date与String的相互转化
点击右上角即可分享
微信分享提示