码迷,mamicode.com
首页 > 其他好文 > 详细

golang sync.Once

时间:2015-04-08 14:58:57      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

package main

import (
    "fmt"
    "sync"
    "time"
)

var counter int = 0

func main() {
    var once sync.Once
    onceBody := func() {
        time.Sleep(3e9)
        fmt.Println("Only once")
    }
    done := make(chan bool)
    for i := 0; i < 10; i++ {
        j := i
        go func(int) {
            once.Do(onceBody)
            fmt.Println(j)
            done <- true
        }(j)
    }
    //给一部分时间保证能够输出完整【方法一】
    //for i := 0; i < 10; i++ {
    //    <-done
    //}

    //给一部分时间保证能够输出完整【方法二】
    <-done
    time.Sleep(3e9)
}

 

golang sync.Once

标签:

原文地址:http://www.cnblogs.com/rojas/p/4402275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!