• 首页
  • 热点
  • 资讯
  • 财经
  • 要闻
  • 经济
  • 快讯
  • 科技
  • 滚动
  • 行业
  • 教育
logo
  • 中陕网首页 >
  • 中陕网 > 资讯 >
  • 正文

[Golang]Goroutine基础

2023-03-15 13:15:02 来源:腾讯云

这篇文章将关注 Go 语言基础部分。我们将讨论关于性能方面的一些知识,并通过创建一些简单的 goroutine 来扩展我们的应用程序。


(资料图)

我们还会关注一些 Go 语言的底层执行逻辑以及 Go 语言与其他语言的不同之处。

Go 语言的并发

继续讨论之前,我们必须理解并发与并行的概念。Golang 可以实现并发和并行。

我们一起来看下并发与并行的区别。

理解并发

应用程序可能会通过处理多个进程来完成预期的功能。我们来假设一个简单的电子商务网站,经评估有下列需要并发执行的任务:

在网页的顶部显示最新的交易和产品信息;显示网站当前的在线用户数量;当用户选择商品之后更新购物车详情;为“目标交易额”倒计时;

该网站需要同时运行所有这些任务,以使用户与网站保持关联,并使网站对用户有吸引力并吸引更多业务。

因此,为了满足业务需要,一个简单的应用程序或者网站都可能包含一组后台运行的任务。

上图所示的两个示例中,有多个任务同时执行,但是它们之间仍然有区别。让我们进一步研究以便能更了解。

理解并发与并行执行

处理并发应用

假设这样一种场景,我们有一台单核机器,需要完成多个任务,但有个限制,在任何时刻,单核机器上只能运行一个任务。

在并发模型中,任务之间存在上下文切换。该程序正在处理多个任务,但由于我们只有单核,因此任务无法一起执行。

任务之间的上下文切换很快,以至于我们感觉任务是同时运行的。

在执行过程中没有并行执行的因素,因为是一个单核系统,多进程不能并行执行。

如上图所示,Concurrency (Without Parallelism) 有两个任务需要并发执行。在任何时候,只有一个任务在运行并且任务之间存在上下文切换。

应用程序加入并行

使用单核的情况下,存在核数限制。如果我们给机器增加核数,就可以在不同的内核上同时执行任务。

在上图中(Parallelism),任一时刻都有两个任务在执行,这两个任务运行在不同的内核上。

并发是某一时间段内同时处理多个任务,并行是在某一时间点能执行多个任务。

使用 Go 语言可以轻松地将程序从并发扩展为并行执行。

使用协程

使用 Go 语言实现并发和并行,我们需要了解协程(Goroutines)的概念。Go 语言的协程可以理解为线程之上的一个包装器,由 Go 运行时管理而不是操作系统。

Go 运行时负责给协程分配和回收资源,协程与完成多任务的线程非常相似但又比操作系统线程消耗更少的资源。协程与线程之间并非一对一的关系。

我们可以将应用程序“拆解”成多个并发任务,这些任务可以由不同的 goroutine 完成,通过这种方式即可实现了 Go 语言并发。

协程的优点:

更轻量级;易扩展;虚拟线程;需要更少的初始内存(2KB);有必要的话,Go 运行时能分配更多的内存;

一起来看下一个简单的例子:

packagemainimport("fmt""time")funcmain(){start:=time.Now()func(){fori:=0;i<3;i++{fmt.Println(i)}}()func(){fori:=0;i<3;i++{fmt.Println(i)}}()elapsedTime:=time.Since(start)fmt.Println("TotalTimeForExecution:"+elapsedTime.String())time.Sleep(time.Second)}

上面的代码按顺序依次在 main 函数里面执行了两个独立函数。

代码没有使用协程,程序在同一个线程中执行完成。程序没有任何的并发性,执行结果如下:

代码按顺序执行,从主函数开始,先执行第一个函数,再执行第二个函数,最后从主函数正常退出。

引入协程

上面的场景例子中没有使用任何的协程。我们可以在执行函数之前使用 go 关键字开启协程。

依旧是上面的例子,我们一起来看看使用 go 关键字开启协程之后会是什么样的:

packagemainimport("fmt""time")funcmain(){start:=time.Now()gofunc(){fori:=0;i<3;i++{fmt.Println(i)}}()gofunc(){fori:=0;i<3;i++{fmt.Println(i)}}()elapsedTime:=time.Since(start)fmt.Println("TotalTimeForExecution:"+elapsedTime.String())time.Sleep(time.Second)}

执行上面的代码输出:

上面的代码,使用 go 关键字分别开启了两个协程并执行各自的函数,包括主协程,总共有 3 个协程。

理解与顺序执行的不同

上面的代码,我们使用 go 关键字开启协程,函数会在协程中完成执行,而不是在主协程中执行,这样增加了并发并提高了程序性能。

增加并行性

Go 语言里,可以通过下面这行简单的代码设置程序运行的内核数目(PS:从 Go 1.5开始,Go 的 GOMAXPROCS 默认值已经设置为 CPU 的核数)。

runtime.GOMAXPROCS(4)

这可以指定程序在多核机器上运行,上面一行代码指定程序可以使用四个内核来执行。

一旦创建了协程,便可以在不同的内核中执行,从而实现并行并加快程序执行速度。

packagemainimport("fmt""time""runtime")funcmain(){runtime.GOMAXPROCS(4)start:=time.Now()gofunc(){fori:=0;i<3;i++{fmt.Println(i)}}()gofunc(){fori:=0;i<3;i++{fmt.Println(i)}}()elapsedTime:=time.Since(start)fmt.Println("TotalTimeForExecution:"+elapsedTime.String())time.Sleep(time.Second)}

上面的代码输出如下:

使用 Go 语言可以轻松实现并发和并行。只需在函数之前添加 go 关键字就可以提高程序执行速度。

责任编辑:

免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。如稿件版权单位或个人不想在本网发布,可与本网联系,本网视情况可立即将其撤除。

    为您推荐

  • [Golang]Goroutine基础

    这篇文章将关注Go语言基础部分。我们将讨论关于性能方面的一些知识,并通过创建一些简单的goroutine来扩展我们的应用程序。
  • 时讯:开年中国经济企稳回升

    今年1至2月份
  • 环球聚焦:2023国考笔试放榜 面试人员名单将统一公布

    15日,2023年度国考笔试成绩和分数线公布,考生可在国家公务员局网站专题网页查询。中国银保监会及其派出机构职位、中国证监会及其派出机构职
  • 【世界时快讯】水利部:开展七大江河干流堤防达标建设3年提升行动

    新华社北京3月15日电 水利部部长李国英日前表示,推进具有流域洪水
  • 国家医保局印发《医疗保障基金飞行检查管理暂行办法》

    新华社北京3月15日电 为加强医疗保障基金监督检查,规范飞行检查工
  • 天天动态:美媒:汇丰买下硅谷银行英国分行为仓促之举,收购后才开始梳理后者家底

    知情人士透露,在当地时间周一以1英镑价格敲定收购硅谷银行英国分行的交易后,汇丰当天晚些时候开始仔细梳理硅谷银行英国有限公司的家底。这次
  • 电脑机械硬盘5400转和7200转有哪些区别?机械硬盘的转数是什么意思?

    电脑机械硬盘5400转和7200转有哪些区别如果您试图在 5400 RPM 和 7200 RPM 硬盘之间做出选择,在本指南中,我们将看到两者之间的区别
  • 怎么隐藏Windows11电脑照片应用程序中的OneDrive照片?防止照片应用程序显示OneDrive图像方法

    怎么隐藏Windows11电脑照片应用程序中的OneDrive照片在 Windows 11 中,当你将 Microsoft 帐户与电脑关联时,照片应用程序会自动显示
  • win10系统升级更新错误代码0x8000ffff解决方法 电脑更新失败代码0x8000ffff怎么办?

    win10系统升级更新错误代码0x8000ffff解决方法0x8000ffff是什么错误?大家在更新win10系统的时候,有可能会遇到错误0x8000ffff,导致更新失
  • win1020h2版本安装失败是什么问题?Window1020H2版本功能更新安装失败解决办法介绍

    win1020h2版本安装失败是什么问题Window1020H2版本的功能更新安装失败的解决办法 Win1020H2版本的功能更新安装怎么办?这该如何解决呢?下面
  • Windows11电脑上面的Cortana不能正常运行怎么办?Cortana无法在Win11中运行处理方法

    Windows11电脑上面的Cortana不能正常运行怎么办&bull; 如您所见,Windows 11 中 Microsoft 的基本安装或启动体验中不再包含 Cortana
  • 赫什老友、前CIA分析师麦戈文:美国是调查“北溪”事件最大障碍

    就“北溪”天然气管道爆炸事件,联合国安理会曾于2月下旬听取美国前
  • 从两件小事看有效需求(微经济)

    应该更多地发掘有效需求,努力满足人民群众个性化、多样化、不断升
  • 多地发布艺考改革方案,艺考招生将有这些新变化!

    北京教育考试院14日发布通知,到2024年全面实施音乐、舞蹈、表(导)演、播音与主持、美术与设计、书法等6个艺术类专业全市统一专业考试。《通知
  • 世界热点!中国代表:“中国恐惧症”是对中国的错误认知、战略误判和政治操弄

    (记者廖攀)中国常驻联合国副代表耿爽14日在安理会审议乌克兰问题时发言表示,个别国家政客患上的“中国恐惧症”是对中国的错误认知、战略误判
  • 埃及、土耳其、伊拉克、阿联酋等中东国家欢迎沙伊北京对话成果

    沙特和伊朗在中国斡旋下握手言和,此事在国际社会引发热烈讨论。埃
  • 【天天聚看点】沙尘暴蓝色预警继续!河南山东等8省区有扬沙或浮尘天气

    中央气象台3月15日06时继续发布沙尘暴蓝色预警:受冷空气大风影响,
  • 甲流有何特点 重点人群如何预防——医学专家解答甲型流感防治热点问题

    流感监测显示,当前我国流感病毒活动水平有所增强,以甲型流感为主
  • 当前看点!甲流来袭 儿童防治注意这几点

    每年春季是甲流的高发季节,最近一些地方出现了散发病例,感染的患
  • 热推荐:【科技前沿】我科学家实现百兆比特率量子密钥分发将国际成码率纪录提升一个数量级

    【科技前沿】日前,我国科学家通过发展高保真度集成光子学量子态调
  • 以公共文化服务点亮美好生活(人民时评)

    在山东威海,市民来到城市书房感受阅读之美、读书之乐;在湖南长沙
  • Windows11电脑无法删除PIN是什么情况?Win删不了pin密码解决方法分享

    Windows11电脑无法删除PIN是什么情况&bull; 一些用户在升级后报告了同样的问题:他们无法在 Windows 11 中删除 PIN。&bull; 大多数报
  • Win10电脑更新系统后网络适配器不见了怎么办?电脑网络适配器丢失修复方法分享

    Win10电脑更新系统后网络适配器不见了怎么办Windows更新后PC无法识别网络适配器或网络适配器丢失?这是如何从Windows10的设备管理器中找回丢
  • 全球通讯!华津时代净水器好不好(华津时代净水器官网)

    1、作为一名销售净水器近5年的销售员,不得不说净水器行业乱象丛生;如果你想选购一款适合自己的净水器请务必认真阅读思考这篇短文:你或许从
  • Win11家庭版没有组策略编辑器怎么解决?Windows11家庭版启用组策略编辑器操作步骤介绍

    Win11家庭版没有组策略编辑器怎么解决Microsoft 提供了一个有用的工具,称为组策略编辑器,通常称为 Gpedit msc 或 GPEDIT,带有其 Wi
  • Windows11电脑禁用启动声音详细设置方法 怎么禁用win11电脑的开机启动声音?

    Windows11电脑禁用启动声音详细操作方法您可以通过 Windows 设置禁用 Windows 11 的启动声音:1 打开设置(按Windows 键 + I)。2
  • 天天即时看!重启首脑外交 尹锡悦访日能打破韩日关系恶性循环吗?

    中新网3月14日电 据韩联社报道,韩国国家安保室长金圣翰14日在总统
  • 焦点速读:中国驻比利时大使馆就比政府部门禁用TikTok答问

    3月14日,中国驻比利时大使馆发言人就比政府部门禁用TikTok答问。问
  • 世界热讯:中国检察机关2022年起诉生产、销售伪劣商品犯罪14449人

    中新社北京3月14日电 (记者 张素)国际消费者权益日来临之际,中国
  • 最资讯丨瑞典最大养老基金连踩三雷 损失12.7亿欧元

    据欧洲投资杂志《IPE》13日报道,在美国硅谷银行(SVB)、签名银行
  • 天天亮点!服装销售合同范本完整_服装销售合同范本

    1、去百度文库,查看完整内容>内容来自用户:海洋文库服装销售合同范本服装销售合同范本是服装销售合同的一个样本,其
  • 全球快资讯丨外交部发言人:自3月15日起扩大开放公民出境团队游国家试点范围

    新华社北京3月14日电(记者马卓言、董雪)外交部发言人汪文斌14日在
  • 当前关注:三部门印发关于开展第二批现代产业学院建设工作的通知

    记者3月14日从教育部获悉,为培养适应和引领现代产业发展的高素质应用型、复合型、创新型人才,教育部办公厅、国家发展改革委办公厅、工业和信
  • 我国实现多个领域新突破 推动高质量发展

    随着经济恢复加速,在油气、光电等领域,我国实现多项新突破,为高质量发展注入新动能。中国石化西北油田副总地质师曹自成:顺北84井是顺北油
  • 我国“深地一号”工程又获新突破

    新华社北京3月14日电(记者 戴小河)中国石化14日宣布,公司“深地
  • 农发行今年累放粮棉油贷款超千亿元支持春耕备耕

    新华社北京3月14日电(记者 侯雪静)记者14日从中国农业发展银行了
  • 每日播报!昭通市蒙泉建筑安装工程公司_对于昭通市蒙泉建筑安装工程公司简单介绍

    1、昭通市蒙泉建筑安装工程公司于1987年05月12日成立。2、法定代表人刘存刚,公司经营范围包括:建筑工程施工总承包贰
  • 焦点!微视频丨路

    你会选择一条怎样的路?
  • 世界热推荐:地方监管发文:小贷公司出租牌照将被一票否决

    来源|镭射财经(leishecaijing)在金融持牌趋势下,寻找牌照标的的企业增加,牌照交易市场也维持活跃。与之相随,监管对于牌照主体的合规管控
  • 【环球时快讯】海外网深一度:硅谷银行破产,美国市场很慌

    video-js { width: 300px; heigh
  • 8937.77米 我国打破亚洲陆上垂深最深千吨井纪录

    中国石化对外宣布,位于塔里木盆地的顺北84斜井,垂直钻井深度已突破8937 77米,成为目前亚洲陆地上垂直深度最深的千吨井。
  • 甲流与普通感冒有何区别?甲流与新冠会叠加感染吗?一起了解→

    每年春季是甲流的高发季节。监测数据显示,近期以甲流为主的流感活动水平持续上升,感染甲流一般会有什么症状?甲流与普通感冒有何区别?
  • 美国政府新批石油项目遭谴责 民众怒斥:这是背叛!

    中新网3月14日电 据美联社报道,拜登政府当地时间13日表示,批准康
  • 全球热门:全总:省级和市级总工会选派3%到5%机关干部赴基层蹲点

    全国总工会近日发出通知,启动2023年工会县级以上机关干部赴基层蹲
  • 天天新动态:中老铁路老挝段3月15日启用互联网手机APP售票系统

    中国网3月14日讯 (记者 唐佳蕾)记者从老中铁路公司获悉,老挝万
  • 世界观察:一村种万树!新洲“村增万树”潘塘街试点推进

    一村种万树!新洲“村增万树”潘塘街试点推进---通讯员张凡徐定平。3月13日,在武汉市新洲区潘塘街广湾村广袤土地上,百株枇杷、海棠等苗木屹
  • 【环球时快讯】收货确认书格式_收货确认书

    1、收货确认书今收到XX公司XX(产品名称)XX件,总共金额XX元,与采购订单XX(相符 不相符)。2、XX公司XX部门
  • 当前速讯:80后村医史永明:他的电话号码被当地群众称为“救命号码”

    在两千年前,内蒙古自治区准格尔旗纳林村曾有一个美丽的名字“美稷
  • 全球微资讯!江西上犹90后“新农人”发展茶产业助力乡村振兴

    陈开敏参加上犹县新联会乡村振兴队组织的活动。(资料图) 上犹县
  • 焦点速读:硅谷银行重新开放 储户形容心情:犹如从地狱回到人间

    中新网3月14日电 据“中央社”报道,美国硅谷银行13日重新开放,有
  • 环球聚焦:硅谷银行重新开放 储户形容心情:犹如从地狱回到人间

    据“中央社”报道,美国硅谷银行13日重新开放,有储户表示10日至今的心情犹如“从地狱回到人间”。当地时间3月13日,客户在美国加州圣克拉拉市
  • 新冠防控新方案:高校开学后不强制师生佩戴口罩

    近日,教育部办公厅、国家卫生健康委办公厅、国家疾病预防控制局综
  • 当前热讯:全球精品纯电小车冠军奇瑞小蚂蚁享至高10000元购车权益 钜惠到底

    奇瑞小蚂蚁又来内卷了!随着汽车降价潮的来临,人们也迎来了购车最佳时机,有购车需求的小伙伴们纷纷摩拳擦掌,但欣喜的同时也不
  • 世界资讯:土耳其2月强震已致4.8万余人遇难

    新华社安卡拉3月13日电 土耳其内政部长索伊卢13日表示,2月6日发生
  • 世界今头条!中国医生“点亮”吉布提白内障患者希望之光

    近日,“消除白内障致盲项目”在吉布提首都吉布提市启动,项目首批医疗队由来自山西省眼科医院白内障科的7名医护人员组成。山西省将在未来几年
  • 焦点热门:国家移民管理局进一步调整外国人来华签证及入境政策

    新华社北京3月14日电 为更好统筹疫情防控和经济社会发展需要,便利

相关推荐

  • 怎么隐藏Windows11电脑照片应用程序
  • win10系统升级更新错误代码0x8000ff
  • win1020h2版本安装失败是什么问题?
  • Windows11电脑上面的Cortana不能正
  • 赫什老友、前CIA分析师麦戈文:美国
  • 从两件小事看有效需求(微经济)
  • 多地发布艺考改革方案,艺考招生将
  • 世界热点!中国代表:“中国恐惧症
  • 埃及、土耳其、伊拉克、阿联酋等中
  • 【天天聚看点】沙尘暴蓝色预警继续

阅读排行

  • [Golang]Goroutine基础
  • 时讯:开年中国经济企稳回升
  • 环球聚焦:2023国考笔试放榜 面试人员名单将统一公布
  • 【世界时快讯】水利部:开展七大江河干流堤防达标建设3年提升行动
  • 国家医保局印发《医疗保障基金飞行检查管理暂行办法》
  • 天天动态:美媒:汇丰买下硅谷银行英国分行为仓促之举,收购后才开始梳理后者家底
  • 电脑机械硬盘5400转和7200转有哪些区别?机械硬盘的转数是什么意思?
  • 怎么隐藏Windows11电脑照片应用程序中的OneDrive照片?防止照片应用程序显示OneDrive图像方法
  • win10系统升级更新错误代码0x8000ffff解决方法 电脑更新失败代码0x8000ffff怎么办?
  • win1020h2版本安装失败是什么问题?Window1020H2版本功能更新安装失败解决办法介绍

中陕网版权所有