首页 > 其他分享 >8小时golang速成(五)Golang高阶 1、goroutine

8小时golang速成(五)Golang高阶 1、goroutine

时间:2024-02-13 22:11:26浏览次数:31  
标签:golang 协程 goroutine Golang 并发 线程 系统资源 轻量级

1、goroutine

  协程并发

协程:coroutine。也叫轻量级线程。

与传统的系统级线程和进程相比,协程最大的优势在于“轻量级”。可以轻松创建上万个而不会导致系统资源衰竭。而线程和进程通常很难超过1万个。这也是协程别称“轻量级线程”的原因。

一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。

多数语言在语法层面并不直接支持协程,而是通过库的方式支持,但用库的方式支持的功能也并不完整,比如仅仅提供协程的创建、销毁与切换等能力。如果在这样的轻量级线程中调用一个同步 IO 操作,比如网络通信、本地文件读写,都会阻塞其他的并发执行轻量级线程,从而无法真正达到轻量级线程本身期望达到的目标。

   在协程中,调用一个任务就像调用一个函数一样,消耗的系统资源最少!但能达到进程、线程并发相同的效果。

在一次并发任务中,进程、线程、协程均可以实现。从系统资源消耗的角度出发来看,进程相当多,线程次之,协程最少。

 

标签:golang,协程,goroutine,Golang,并发,线程,系统资源,轻量级
From: https://www.cnblogs.com/chenxiaomeng/p/18014880

相关文章

  • 8小时速成golang(四)反射reflect 和 结构体标签
    编程语言中反射的概念在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。每种语言的反射模......
  • 8小时速成golang(四)语法新奇
      1、从一个main函数初见golang语法packagemainimport"fmt"funcmain(){/*简单的程序万能的helloworld*/fmt.Println("HelloGo")}终端运行$goruntest1_hello.goHelloGo$gorun表示直接编译go语言并执行应用......
  • 8小时速成golang(三)Golang语言特性
    golang的优势一、极其简单的部署方式1、可直接编译成机器码2、不需要依赖其他库3、直接运行即可部署 二、静态语言类型可在编译的时候检查出大多隐藏问题 三、语言层面的并发1、天生的基因支持2、充分利用多核packagemainimport("fmt""time")fu......
  • 8小时速成Golang(二)Golang开发环境 环境配置
     Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/Go官网:https://golang.org/ golang在Windows安装和配置可看链接:https://blog.csdn.net/weixin_54626591/article/details/134485077按照步骤一步一步next再配置环境变量即可 golan......
  • golang基础知识
    init函数是什么时候执行的init函数的作用是程序执行前包的初始化init函数执行顺序同一go文件中可以写多个init函数,按照代码顺序依次执行同一个package中,按照文件名(ASCII码顺序)顺序执行不同包且不互相依赖,按照import的顺序执行不同package中且互相依赖的,最后被依赖的最......
  • Golang包管理
    go包管理历史gopathgo1.5版本之前GOPATHsrc存放源代码pkg存放编译后的文件bin存放编译后的可执行文件通过统一包存放的路径来进行管理不支持依赖包的版本控制gopath模式下工程代码必须放在GOPATH/src下goget将远程代码克隆到GOPATH/src目录下goi......
  • Golang内部包的使用
    函数和变量的可见性小写字母开头只能在内部访问internal文件夹internal父级,同级目录下的包可以访问internal目录内部的包作用例子将管理后台的包和用户的包分开,将工程放在internal里面,公用包放在外面私有包的导入本地包导入使用replace进行替换原来包的地址=>替换后的......
  • 8小时速成golang--Golang环境安装
    安装Golang的步骤如下:下载Golang安装包。访问Golang官方网站[golang.org](https://golang.org/),根据您的操作系统类型和位数选择合适的安装包。Windows系统通常下载.msi格式的安装包,而Linux系统则下载.tar.gz或.zip格式的安装包。安装Golang。对于Windows系统,双击......
  • golang容器部署时区报错
    问题:consttimezone="Asia/Shanghai"funcTimeFormat(datetime.Time,patternstring)string{location,err:=time.LoadLocation(timezone)date.In(location)returndate.Format(pattern)} 1.在本地开发使用了时区是没有问题的,但是部署到服务器上面......
  • golang之枚举类型iota
    枚举类型是一种常用的数据类型,用于表示一组有限的、预定义的、具名的常量值。在枚举类型中,每个常量都是一个枚举值,它们之间的值相等且唯一。枚举类型通常用于表示一组相关的常量,比如星期、月份、性别等等。在其他语言里(比如Java和C),都内置了枚举类型,而在Go语言里是没有内置......