• 2024-12-24Go 并发控制:sync.WaitGroup 详解 GoCN 2024年12月24日 16:37 浙江 听全文
    Go并发控制:sync.WaitGroup详解GoCN  2024年12月24日16:37 浙江 听全文 以下文章来源于Go编程世界 ,作者江湖十年Go编程世界.不限于Golang、Docker、Kubernetes,技术博客https://jianghushinian.cn/的移动版。前段时间我在《Go并发控制:errgroup详解》
  • 2024-12-18GO:同步工具WaitGroup
    什么是WaitGroup?WaitGroup是Go的标准库sync包中提供的一种并发控制工具,用于等待一组goroutine完成工作。它非常适合在主线程需要等待一组goroutine全部完成时使用。通俗解释可以把WaitGroup想象成一个计数器:启动任务时:给计数器加1。任务完成时:给计数器减1。
  • 2024-11-30第七章:并发编程 1.Goroutines --Go 语言轻松入门
    Go语言中的Goroutines是一种轻量级的线程,它允许你以非常低的成本并发执行多个函数或方法。Goroutines是Go并发模型的核心组成部分,与channels一起使用可以实现高效的并发编程。什么是Goroutines?1.内存占用小初始堆栈大小:每个Goroutine的初始堆栈大小非常小,通常
  • 2024-09-14一个小例子,给你讲透典型的 Go 并发操作
    如果你有一个任务可以分解成多个子任务进行处理,同时每个子任务没有先后执行顺序的限制,等到全部子任务执行完毕后,再进行下一步处理。这时每个子任务的执行可以并发处理,这种情景下适合使用sync.WaitGroup。虽然sync.WaitGroup使用起来比较简单,但是一不留神很有可能踩到坑里。sync.
  • 2024-07-29【Golang 面试 - 进阶题】每日 3 题(三)
    ✍个人博客:Pandaconda-CSDN博客
  • 2024-07-13计算一组整数的平方,并打印出来
    packagemainimport("fmt""sync")funcsquare(test*sync.WaitGroup,nint){//使用sync.WaitGroup来等待所有goroutine完成defertest.Done()//确保在square函数结束时减少WaitGroup的计数器值fmt.Printf("平方数:%d\n",n
  • 2024-06-24Go WaitGroup流程
    WaitGroup流程typeWaitGroupstruct{ noCopynoCopy //64-bitvalue:high32bitsarecounter,low32bitsarewaitercount. //64-bitatomicoperationsrequire64-bitalignment,but32-bit //compilersdonotensureit.Soweallocate12bytesandthe
  • 2024-05-14ErrGroup
    main.gopackagemainimport("context""errors""fmt""time""golang.org/x/sync/errgroup")functask1(ctxcontext.Context)error{fmt.Println("Task1startedsuccessfully")select{
  • 2024-04-26sync.WaitGroup
    sync.WaitGroup是Go语言标准库中提供的一个同步原语,用于在并发环境中协调多个Goroutine的执行顺序,确保所有并发任务完成后再继续执行后续逻辑。以下是sync.WaitGroup的使用方法:创建WaitGroup:使用sync.WaitGroup类型的零值创建一个实例,无需调用任何构造函数:varw
  • 2024-02-25Go 100 mistakes - #71: Misusing sync.WaitGroup
       
  • 2024-02-06[Go] Go routines with WaitGroup and async call
    So,let'ssaywehaveafunctiontofetchcryptocurrenciesprice:packagemainimport( "fmt" "sync" "project/api")funcmain(){gogetCurrencyData("BTC")gogetCurrencyData("BCH")
  • 2024-01-31Golang不可不知的7个并发概念
    Golang不可不知的7个并发概念原创 俞凡DeepNoMind DeepNoMind 2024-01-1311:08 发表于上海 听全文并发性支持是Golang最重要的原生特性之一,本文介绍了Golang中和并发性相关的7个概念。原文: Golang:7must-knowconcurrencyrelatedconcepts[1]并发是Go编程
  • 2024-01-21Go语言核心36讲 31 | sync.WaitGroup和sync.Once
    我们在前几次讲的互斥锁、条件变量和原子操作都是最基本重要的同步工具。在Go语言中,除了通道之外,它们也算是最为常用的并发安全工具了。说到通道,不知道你想过没有,之前在一些场合下里,我们使用通道的方式看起来都似乎有些蹩脚。比如:声明一个通道,使它的容量与我们手动启用的gorou
  • 2024-01-13go的并发梳理
    Golang不可不知的7个并发概念原创 俞凡DeepNoMind DeepNoMind 2024-01-0613:10 发表于上海 3人听过并发性支持是Golang最重要的原生特性之一,本文介绍了Golang中和并发性相关的7个概念。原文: Golang:7must-knowconcurrencyrelatedconcepts[1]并发是Go编程
  • 2023-12-28Go sync 包解析与实战
    在并发世界中,Go语言以其原生的并发特性脱颖而出。Go的sync包提供了基本的同步原语,如互斥锁(sync.Mutex)、等待组(sync.WaitGroup)等,能够帮助开发者在并发环境下编写更安全、更可靠的代码。本文将深入剖析sync包的核心组件,并通过实例演示其在Go并发程序中的实际应用。从sync.Mutex
  • 2023-12-07waitgroup如何其中一个协程发生错误,应该如何处理
    等待一个协程组全部正确完成则结束;但其中一个协程发生错误,这时候就会阻塞,全部停止运行(本次任务失败)以免浪费系统资源,此时可以结合通道(channel)或者select语句两种方式来处理。1、考虑使用两个通道:一个用于报告错误,另一个用于通知所有协程停止。在协程内部捕获错误,并将错误信息
  • 2023-09-29Go每日一库之181:conc(并发库)
    来自公司sourcegraph的conc**(https://github.com/sourcegraph/conc)并发库,目标是betterstructuredconcurrencyforgo,简单的评价一下每个公司都有类似的轮子,与以往的库比起来,多了泛型,代码写起来更优雅,不需要interface,不需要运行时assert,性能肯定更好我们在写通
  • 2023-09-27golang-waitgroup
    说明golang通过waitgroup来实现并发控制,用法跟java的CountDownLatch 效果一样 WaitGroup的使用场景和方法我们通过goroutine运行一个或者一组任务,需要关心这组任务执行完了进行通知WaitGroup如同它的字面意思,就是等待一组goroutine运行完成,主要有三个方法组成:Add(de
  • 2023-08-01生产消费模型-使用channel控制生产速度
    packagemainimport("fmt""sync")typeProducerstruct{IDintDataStreamchanintWaitGroup*sync.WaitGroup}func(p*Producer)Produce(concurrency<-chanstruct{}){deferp.WaitGroup.Done(
  • 2023-07-10sync.WaitGroup Add( ) 用法
    使用sync.WaitGroup来实现并发任务的同步。Done()通常在函数内使用deferwg.Done()调用。add()学习是我通常也放在函数内,今天我发现在函数内调用会出现问题,主进程会先执行,比如如下代码,会出现问题。packagemainimport( "fmt" "sync")varnintvarwgsync.WaitGroup
  • 2023-06-22golang 的 sync.WaitGroup
    WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。官方对它的说明如下:AWaitGroupwaitsforacollectionofgoroutinestofinish.ThemaingoroutinecallsAddtosetthenumberofgoroutinestowaitfor.Thenea
  • 2023-04-27Golang 并发&同步的详细原理和使用技巧
    Golang并发概要说明并发模型Golang的并发模型属于一种很典型的CSP(communicatingsequentialprocesses)并发模型,其核心是不要通过共享内存来通信,而应该通过通信来共享内存。具体实现,就是通过goroutine来实现并发,然后并发的goroutine之间通过Channel来进行通信;为此,Gola
  • 2023-03-23Go语言并发编程(3):sync包介绍和使用(上)-Mutex,RWMutex,WaitGroup,sync.Map
    一、sync包简介在并发编程中,为了解决竞争条件问题,Go语言提供了sync标准包,它提供了基本的同步原语,例如互斥锁、读写锁等。sync包使用建议:除了Once和WaitGroup