golang 协程怎么解释

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

2.golang是如何实现的

阅读 3.6k
3 个回答

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题