zoukankan      html  css  js  c++  java
  • 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()方法是不会被执行的。

  • 相关阅读:
    powermock测试
    一些疑惑
    Java基础总结3
    Java学习路线
    Java基础总结2
    关于我
    翻转单词序列
    和为s的两个数字
    和为s的连续正数序列
    数组中只出现一次的数字
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/6566320.html
Copyright © 2011-2022 走看看