最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sync.WaitGroup的用法及說明

 更新時(shí)間:2025年07月28日 08:59:12   作者:你是我的幸運(yùn)兒  
Go語言中WaitGroup用于同步goroutine,Add設(shè)置計(jì)數(shù)器,Done減1,Wait阻塞直到計(jì)數(shù)器歸零,示例顯示并發(fā)執(zhí)行結(jié)果順序隨機(jī),但整體完成后輸出over

sync.WaitGroup的用法

WaitGroup在go語言中,用于線程同步,單從字面意思理解,wait等待的意思,group組、團(tuán)隊(duì)的意思,WaitGroup就是指等待一組,等待一個(gè)系列執(zhí)行完成后才會繼續(xù)向下執(zhí)行。

WaitGroup能夠一直等到所有的goroutine執(zhí)行完成,并且阻塞主線程的執(zhí)行,直到所有的goroutine執(zhí)行完成。

WaitGroup總共有三個(gè)方法

Add(delta int),Done(),Wait()

簡單的說一下這三個(gè)方法的作用。

  • Add:添加或者減少等待goroutine的數(shù)量;
  • Done:相當(dāng)于Add(-1);
  • Wait:執(zhí)行阻塞,直到所有的WaitGroup數(shù)量變成 0;

如圖:WatiGroup的定義

google官方示例

package main

import (
    "fmt"
    "sync"
    "net/http"
)

func main() {
    var wg sync.WaitGroup
    var urls = []string{
            "http://www.golang.org/",
            "http://www.google.com/",
            "http://www.baiyuxiong.com/",
    }
    for _, url := range urls {
            // Increment the WaitGroup counter.
            wg.Add(1)
            // Launch a goroutine to fetch the URL.
            go func(url string) {
                    // Decrement the counter when the goroutine completes.
                    defer wg.Done()
                    // Fetch the URL.
                    http.Get(url)
            fmt.Println(url);
            }(url)
    }
    // Wait for all HTTP fetches to complete.
    wg.Wait()
    fmt.Println("over");
}

代碼執(zhí)行結(jié)果為:

http://www.baiyuxiong.com/
http://www.google.com/
http://www.golang.org/
over

從執(zhí)行結(jié)果可看出:

1、取三個(gè)網(wǎng)址信息的時(shí)候,結(jié)果顯示順序與for循環(huán)的順序沒有必然關(guān)系。

2、三個(gè)goroutine全部執(zhí)行完成后,wg.Wait()才停止等待,繼續(xù)執(zhí)行并打印出over字符。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go中使用加密算法的方法

    Go中使用加密算法的方法

    本文通過實(shí)例代碼給大家介紹go中使用加密算法的方法,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08
  • go grpc安裝使用教程

    go grpc安裝使用教程

    gRPC是由Google主導(dǎo)開發(fā)的RPC框架,使用HTTP/2協(xié)議并用ProtoBuf作為序列化工具。這篇文章主要介紹了go grpc安裝使用教程,需要的朋友可以參考下
    2018-02-02
  • Golang中錯(cuò)誤處理機(jī)制詳解

    Golang中錯(cuò)誤處理機(jī)制詳解

    平時(shí)在項(xiàng)目開發(fā)過程中少不了對錯(cuò)誤的處理,一個(gè)好用的系統(tǒng)首先要確保其健壯性,不能經(jīng)常發(fā)生錯(cuò)誤就卡死之類的情況,為了讓我們的程序更加健壯,我們就需要知道golang里的錯(cuò)誤處理機(jī)制是怎么樣的,這篇文章帶大家一起學(xué)習(xí),需要的朋友跟著小編一起來看看吧
    2024-05-05
  • 淺析Go語言中的超時(shí)控制

    淺析Go語言中的超時(shí)控制

    日常開發(fā)中我們大概率會遇到超時(shí)控制的場景,而一個(gè)良好的超時(shí)控制可以有效的避免一些問題,所以本文就來和大家深入探討一下Go語言中的超時(shí)控制吧
    2023-10-10
  • 帶你在Go?test中體驗(yàn)jest的安裝使用

    帶你在Go?test中體驗(yàn)jest的安裝使用

    這篇文章帶你在Go?test中體驗(yàn)jest的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Go語言中WaitGroup并發(fā)同步利器

    Go語言中WaitGroup并發(fā)同步利器

    本文主要介紹了Go語言中WaitGroup并發(fā)同步利器,從其基本概念、用法、原理到高級用法和最佳實(shí)踐,通過合理使用WaitGroup,能夠提高并發(fā)程序的安全性和效率
    2026-05-05
  • Golang使用channel實(shí)現(xiàn)數(shù)據(jù)匯總的方法詳解

    Golang使用channel實(shí)現(xiàn)數(shù)據(jù)匯總的方法詳解

    這篇文章主要為大家詳細(xì)介紹了在并發(fā)編程中數(shù)據(jù)匯總的問題,并探討了在并發(fā)環(huán)境下使用互斥鎖和通道兩種方式來保證數(shù)據(jù)安全性的方法,需要的可以參考一下
    2023-05-05
  • 使用dep 配置golang 開發(fā)環(huán)境的操作方法

    使用dep 配置golang 開發(fā)環(huán)境的操作方法

    下面小編就為大家?guī)硪黄褂胐ep 配置golang 開發(fā)環(huán)境的操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 使用Golang進(jìn)行比較版本號大小

    使用Golang進(jìn)行比較版本號大小

    在日常開發(fā)中,比較版本號大小的情況是經(jīng)常遇到的,這篇文章主要為大家詳細(xì)介紹了如何使用Golang進(jìn)行比較版本號大小,需要的小伙伴可以參考下
    2024-01-01
  • Go?語言簡單實(shí)現(xiàn)Vigenere加密算法

    Go?語言簡單實(shí)現(xiàn)Vigenere加密算法

    這篇文章主要介紹了Go語言簡單實(shí)現(xiàn)Vigenere加密算法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09

最新評論

屏东市| 当涂县| 灵山县| 太仓市| 临沧市| 华宁县| 石河子市| 杭锦旗| 温州市| 厦门市| 周宁县| 青州市| 东乡| 英吉沙县| 晋州市| 城步| 伊金霍洛旗| 监利县| 石首市| 盈江县| 青田县| 综艺| 凤台县| 南郑县| 龙门县| 连南| 玉山县| 桓仁| 杨浦区| 于田县| 青川县| 扎兰屯市| 正定县| 广饶县| 大渡口区| 齐齐哈尔市| 黑河市| 巴楚县| 清河县| 海口市| 太谷县|