zoukankan      html  css  js  c++  java
  • 《Go语言实战》笔记之协程同步 sync.WaitGroup

    原文地址(欢迎互换友链):

    http://www.niu12.com/article/8

     sync 包提供同步 goroutine 的功能

    <p>文档介绍</p>
    <code>
    // A WaitGroup waits for a collection of goroutines to finish.
    // The main goroutine calls Add to set the number of
    // goroutines to wait for. Then each of the goroutines
    // runs and calls Done when finished. At the same time,
    // Wait can be used to block until all goroutines have finished.
    //
    // A WaitGroup must not be copied after first use.
    翻译
    一个WaitGroup等待一个goroutines集合的完成,
    main(goroutines)调用Add()方法设置需要等到的goroutine熟练
    然后执行每一个goroutine,并且完成时调用Done()方法
    与此同时,Wait()方法可以用来锁住main(goroutines)直到所有goroutine完成

    首次使用后不得复制WaitGroup
    </code>

    <p>实例代码</p>
    <code>
    package main

    import (
    "fmt"
    "sync"
    )
    var wg sync.WaitGroup

    func printerOne(ch chan int) {
    for i := range ch{
    fmt.Printf("printerOne: %v " , i)
    }
    // 申明当前goroutine完成
    wg.Done()
    }

    func printerTwo(ch chan int) {
    for i := range ch{
    fmt.Printf("printerTwo: %v " , i)

    }
    // 申明当前goroutine完成
    wg.Done()
    }

    func main() {
    // 申明一个channel c
    c := make(chan int)

    // 申明有两个goroutine需要执行
    wg.Add(2)

    // 执行goroutine
    go printerOne(c)
    go printerTwo(c)

    // 向channel c发送数据
    for i:=0; i < 10; i++ {
    c <- i
    }
    // 关闭channel c
    close(c)
    // 等待goroutine全部完成
    wg.Wait()
    }
    </code>
  • 相关阅读:
    Postman自动化传参实操
    sql语句大全(详细)
    selenium自动化测试-处理iframe
    selenium切换窗口
    selenium中三大窗口切换
    第一个Appium脚本
    Capability配置简介
    APP专项
    Appium环境搭建
    转载——Python Selenium 常用方法总结
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/10247696.html
Copyright © 2011-2022 走看看