美文网首页
【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个并发

    代码 代码解释: 使用go 开启一个协程,一共开启了100个协程 为什么使用 time.Sleep因为 main函...

  • 技术文章整理分享

    1. Java集合及concurrent并发包总结(转) 2.关于Golang和JVM中并发模型实现的探讨 3.J...

  • golang并发总结

    golang并发模型 go在语言层面提供了内置的并发支持 不要通过共享内存来通信,而应该通过通信来共享内存 并发与...

  • golang并发三板斧系列之一:channel用于通信和同步

    某不知名程序员曾说过: 我们爱golang,很大程度是因为爱它的并发。 我们来总结下golang的并发三板斧,ch...

  • go高效洗牌算法

    golang,语法简单,开发效率高,运行效率也高,用gin可以很轻松撑起高并发。强烈推荐大家学习和使用它,国内越来...

  • golang 并发原语[草稿]

    总结一下昨天 鸟窝 在《Go 同步和并发设计模式》 分享的 golang 并发开发相关的知识。主要分为四个部分,同...

  • Golang的并发编程

    golang是为并发而生的语言。优雅的并发编程范式,完善的并发支持,出色的并发性能是golang区别于其他语言的一...

  • GPM调度模型

    目录 1.什么是进程调度2.并发与并行3.进程、线程与协程4.Golang的调度机制——GPM模型5.总结 1. ...

  • Go append并发问题

    Golang append并发问题

  • golang语言map的并发和排序

    golang语言map的并发和排序 map的并发问题 golang缺省的map不是thread safe的,如果存...

网友评论

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

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