go语言中协程与线程有什么区别

golang中协程和线程的区别

创新互联-专业网站定制、快速模板网站建设、高性价比宿迁网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式宿迁网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖宿迁地区。费用合理售后完善,10多年实体公司更值得信赖。

一般来说,协程就像轻量级的线程。

线程一般有固定的栈,有一个固定的大小。而goroutines为了避免资源浪费(亦或是资源缺乏),采用动态扩张收缩的策略:初始量为2k,最大可以扩张到1G。

每个线程都有一个id,在线程创建的时候就会被返回,所以我们可以通过线程的id来操纵线程。但是在golang中没有这个概念,因此我们在编码之初就要考虑协程的创建和释放问题。

线程和 goroutine 切换调度开销方面

线程/goroutine 切换开销方面,goroutine 远比线程小

线程:涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP...等寄存器的刷新等。

因为协程在用户态由协程调度器完成,不需要陷入内核,这代价就小了。

所以goroutine:只有三个寄存器的值修改 - PC / SP / DX.

以上就是golang中协程和线程的区别是什么?的详细内容,更多请关注创新互联其它相关文章!


新闻名称:go语言中协程与线程有什么区别
网站地址:http://bzwzjz.com/article/gepodd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站制作 H5网站制作 网站制作公司 企业网站设计 成都做网站建设公司 品牌网站建设 自适应网站建设 网站建设方案 重庆企业网站建设 成都定制网站建设 温江网站设计 重庆网站制作 成都网站设计 成都网站制作 品牌网站建设 营销型网站建设 成都网站设计 成都企业网站建设 网站制作 成都网站制作 成都网站建设 宜宾网站设计