美文网首页
【golang 学习总结1】轻松开启100个并发

【golang 学习总结1】轻松开启100个并发

作者: 张清柏 | 来源:发表于2021-06-17 17:04 被阅读0次

    代码

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        for  i:=0;i<100;i++ {
            go sum(i)
        }
    
        time.Sleep(1 * time.Second)
    }
    
    func sum(a int)  {
        fmt.Println(a)
    }
    
    
    
    
    
    • 代码解释:

    使用go 开启一个协程,一共开启了100个协程

    • 为什么使用 time.Sleep
      因为 main函数本身也是一个goroutine,程序运行开始,main函数一直占用cpu,创建的子goroutine没有机会得到执行,后来main函数运行完毕,程序退出。从头到尾一直是主goroutine占用cpu,子进程没有机会得到执行,怎么办呐?我们使用time.Sleep,让主进程运行完毕之前,给个机会给子进程去处理,怎么让主进程让出cpu,time.Sleep 是一种方法

    • 从打印结果可以看到,数字并没有按我们设想的 1 2 3 4 5 顺序返回,而是随机返回,也印证了goroutine是并发执行的

    image.png

    相关文章

      网友评论

          本文标题:【golang 学习总结1】轻松开启100个并发

          本文链接:https://www.haomeiwen.com/subject/gdbcyltx.html