首页 > 其他分享 >Go: Process Synchronization

Go: Process Synchronization

时间:2023-03-17 20:58:42浏览次数:30  
标签:wg WaitGroup 10 Process sync int Synchronization func Go

 

1. channel

func main() {
    boolChan := make(chan bool, 100)
    for i := 0; i < 100; i++ {
        go func(v int) {
            println(v)
            boolChan <- true
        }(i)
    }
    for i := 0; i < 100; i++ {
        <-boolChan
    }
}

 

2. sync.WaitGroup

 

func main() {
    wg := sync.WaitGroup{}
    wg.Add(10)
    for i := 0; i < 10; i++ {
        go func(v int) {
            fmt.Printf("Goroutine: %v, v: %v\n", GetGoroutineID(), v)
            wg.Done()
        }(i)
    }
    wg.Wait()
}

 

func main() {
    wg := sync.WaitGroup{}
    wg.Add(10)
    for i := 0; i < 10; i++ {
        go t(i, &wg)
    }
    wg.Wait()
}
// use *sync.WaitGroup
func t(v int, wg *sync.WaitGroup) {
    fmt.Printf("Goroutine: %v, v: %v\n", GetGoroutineID(), v)
    wg.Done()
}

 

标签:wg,WaitGroup,10,Process,sync,int,Synchronization,func,Go
From: https://www.cnblogs.com/dissipate/p/17228113.html

相关文章

  • Go: Get Goroutine ID
     funcGetGoroutineID()int{varbuf=make([]byte,128)b:=runtime.Stack(buf,false)idField:=strings.Fields(strings.TrimPrefix(string(buf[......
  • 基于DDD领域驱动设计的go语言实现
    什么是DDD?以下是考虑使用DDD的原因:提供解决困难问题的原则和模式将复杂的设计基于领域模型在技术和领域专家之间发起创造性的协作,以迭代地完善解决领域问题的概念模型。DDD......
  • Practical Diversified Recommendations on YouTube with Determinantal Point Proces
    目录概MotivationDPPWilhelmM.,RamanathanA.,BonomoA.,JainS.,ChiE.H.andGillenwaterJ.Practicaldiversifiedrecommendationsonyoutubewithdetermin......
  • golang代码覆盖率测试
    1.概述测试是开发过程的重要部分,也是软件开发生命周期的关键部分。它可以确保应用程序正常运行和满足客户需求。本文将涵盖关于Go测试的所有须知事项。我们将从一个......
  • 106Go基础2
    基础知识1、变量声明和赋值在Go语言中,可以使用var关键字声明变量,也可以使用:=运算符进行简短声明。以下是变量声明和赋值的示例代码:varxintx=1y:=2......
  • 带发行版 Logo 的系统信息显示工具
    Neofetch 是一个跨平台的易于使用的 系统信息显示命令行脚本,它收集你的系统信息,并在终端中和图像一起显示出来,这个图像可能是你的发行版的logo也可能是你选择的一幅......
  • RunnerGo相较于Jmeter优劣势分析
    RunnerGo是一款基于go语言研发的开源测试平台。在这里我想从性能测试方面、结构方面以及功能方面对比两款产品。性能方面:Runner基于go语言研发,相对于jmeter来说更轻量级......
  • 关于Vue3+ts引入文件使用alias别名@时报错问题,process is not defined
    如题,解决办法:一、首先确保有两个文件:   tsconfig.json  vite.config.ts(注:如果是vue.config.js,则手动改为vite.config.js)二、在ts.config.json中修改{"comp......
  • 脚本调用django环境
    使用脚本修改django项目中的数据,就需要手动启动django环境 #引入模块importosimportdjangoos.environ.setdefault('DJANGO_SETTINGS_MODULE','项目名name.setting......
  • 什么是 Go语言的分支语句?
    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师Codey本文主要学习Go语言中的分支语句。一共要介绍的有两个,分别是 if…else 和......