码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Golang 协程、主线程


    Go协程、Go主线程


    1)Go主线程(有程序员直接称为线程/也可以理解成进程):一个Go线程上,可以起多个协程,你可以这样理解,协程是轻量级的线程。
    2)Go协程的特点
    ·  有独立的栈空间
    ·  共享程序堆空间
    ·调度由用户控制
    ·  协程是轻量级的线程
    go线程-协程
    CSDN @富士康质检员张全蛋
     

    编译器做了优化

    线程虽然好,可以做到并发。但是线程还是比较吃资源,吃资源和占用cpu资源比较多。

    现在就是要解决,能不能让cpu全部都参与工作。其次就是线程有点笨重,这样就需要在底层做一些优化,这样线程就变的更加轻巧了。同时在线程之间可以做到资源的共享。

    在主线程里面可以跑很多很多的协程。

    一旦开启了一个协程,它们的数据空间是独立的。

    协程的开启和终止可以有程序员去控制的。

    开启协程,一般以函数为单位进行开启的.如果不使用go test(),那么就是顺序执行的。

    如果开启了协程就是穿插着执行了。

    1. package main
    2. import (
    3. "fmt"
    4. "strconv"
    5. "time"
    6. )
    7. func test() {
    8. for i := 0; i < 5; i++ {
    9. fmt.Println("hello test()" + strconv.Itoa(i))
    10. time.Sleep(time.Duration(1) * 1)
    11. }
    12. }
    13. func main() {
    14. //开启了一个协程
    15. go test()
    16. for i := 0; i < 5; i++ {
    17. fmt.Println("hello main()" + strconv.Itoa(i))
    18. time.Sleep(time.Duration(1) * 1)
    19. }
    20. }
    21. hello main()0
    22. hello test()0
    23. hello main()1
    24. hello test()1
    25. hello test()2
    26. hello main()2
    27. hello main()3
    28. hello test()3
    29. hello test()4
    30. hello main()4

    输出效果说明,main这个主线程和test协程同时执行。

    当执行main的时候就开启了一个主线程,往下执行发现go test(),这样就会开启一个新的分支然后执行,但是主线程并没有阻塞,它会继续往下走,发现for循环去执行,执行完毕主线程就退出。

    记住:只要开启了协程就相当于程序多了一个分支。

  • 相关阅读:
    JAVA毕设项目商店管理系统演示录像(java+VUE+Mybatis+Maven+Mysql)
    房产销售数据分析与可视化的设计与实现
    Linux设备树详细学习笔记
    重复控制器的性能优化
    众和策略:题材股什么意思?
    车间调度|基于帝王蝶优化算法的车间调度(Matlab代码实现)
    【DAY04 软考中级备考笔记】数据结构基本结构和算法
    刷爆力扣之公平的糖果交换
    智能视频分析系统AI智能分析网关V3触发告警图片不显示该如何解决?
    【数据库】你听说过矢量数据库吗?
  • 原文地址:https://blog.csdn.net/qq_34556414/article/details/132862279
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号