go语言中coroutine和goroutine的区别这一问题,在面试中是一个常见的问题,本篇文章着重归纳整理一下这两者的区别:
1.
goroutine 通过通道来通信;
coroutine通过让出和恢复操作来通信
2.
goroutine协程间不完全同步,可以利用多核并行运行,具体要看channel的设计;
coroutine协程间完全同步,不会并行
3.
goroutine可以在多个协程在多个线程上切换,既可以用到多核,又可以减少切换开销。
coroutine只在一个线程中运行,只在一个线程中运行
4.
goroutine操作系统如果发现一个应用程序长时间大量地占用 CPU,那么用户有权终止这个任务。
coroutine如果开发者无意间或者故意让应用程序长时间占用 CPU,操作系统也无能为力,表现出来的效果就是计算机很容易失去响应或者死机。
5.
goroutine 比 coroutine 更强大,也很容易从 coroutine 的逻辑复用到 goroutine。