golang 协程怎么解释

Juice
  • 126

1.协程对应操作系统里面的什么

2.golang是如何实现的

回复
阅读 2.7k
3 个回答
✓ 已被采纳

goroutine是Go语言运行库的功能,不是操作系统提供的功能,goroutine不是用线程实现的。
goroutine就是一段代码,一个函数入口,以及在堆上为其分配的一个堆栈。所以它非常廉价,我们可以很轻松的创建上万个goroutine,但它们并不是被操作系统所调度执行。

什么是协程?
1.调度任务:
cpu最小执行任务是线程,有多个线程时,cpu会给每个线程分配一个时间片,到时后切换到另一个线程。
协程可以由用户进行调度,决定什么时候让渡给其他协程。在golang里,当一个协程出现阻塞后,runtime会把这个协程放到其他线程里,让cpu执行其他的协程。

2.执行效率
协程所占的内存非常小4-5k,所以一个物理机可以开启很多的协程

宣传栏