手记

Go语言sync库和WaitGroup的使用


// code_041_sync_WaitGroup project main.go

package main

import (

    "fmt"

    "sync"

)

func main() {

    fmt.Println("Hello World!")

    var wg sync.WaitGroup

    wg.Add(2)

    go func() {

        defer wg.Done()

        for i := 0; i < 10000; i++ {

            fmt.Printf("Hello,Go.This is %d\n", i)

        }

    }()

    go func() {

        defer wg.Done()

        for i := 0; i < 10000; i++ {

            fmt.Printf("Hello, world.This is %d\n", i)

        }

    }()

    wg.Wait()

}

sync.WaitGroup是一个计数的信号量,使main函数所在主线程等待两个goroutine执行完成后再结束,否则两个goroutine还在运行时,主线程已经结束。

sync.WaitGroup使用非常简单,使用Add方法设设置计数器为2,每一个goroutine的函数执行完后,调用Done方法减1。Wait方法表示如果计数器大于0,就会阻塞,main函数会一直等待2个goroutine完成再结束。

©著作权归作者所有:来自51CTO博客作者ck_god的原创作品,如需转载,请注明出处,否则将追究法律责任

GoWaitGroupsyncGolang

0

分享

收藏

上一篇:goroutine/Gosche... 下一篇:Go语言中channel的基础知...

 ck_god

185篇文章,9W+人气,0粉丝

学无止境,好好学习,天天向上

Ctrl+Enter 发布发布取消

推荐专栏

基于Python的DevOps实战

自动化运维开发新概念

共20章 | 抚琴煮酒

¥51.00 309人订阅

订   阅

微服务技术架构和大数据治理实战

大数据时代的微服务之路

共18章 | 纯洁微笑

¥51.00 614人订阅

订   阅

猜你喜欢

Flask中常见的数据库定义和数据库迁移OS.ENVIRON()详解Go语言11-日志系统客户端相关组件Go语言9-socket和redisGo语言8-goroutine和channelGo语言开发(十一)、Go语言常用标准库一Go语言2-基本数据类型和操作符GO-ruantime

0分享 ck_god


0人推荐
随时随地看视频
慕课网APP