协程的本质 - Go语言中文社区

协程的本质


什么是协程

协程本质也是线程的一种。我们知道,在线程运行的时候,会占用cpu的调度片,当时间片的时间到了之后,就要放弃cpu,并且保存上下文。协程被称为微线程,其实它的本质作用和线程是一样的,也是为了执行一个任务在cpu中占用调度片,在内存中占用一定的空间。区别就是协程会始终占用cpu的时间片,在协程里面,自己实现了一套调度算法。

线程的缺点

  • 速度慢,上下文切换及其费时间。调度的时候需要发起系统调用,在内核态和用户态之间切换。
  • 独立的方法栈占用的空间较大。

协程好处

  • 实现更大的并发度,可以轻易到百万级并发。典型的线程会占用1M的内存空间,一个协程例如gorotine,典型的占用4KB。占用空间小。
  • 速度快,因为线程在时间片切换的时候得保存上下文,而协程不需要。但协程得自己在用户态实现一套调度算法。
版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/f933fc49fe01
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:04:47
  • 阅读 ( 1126 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢