开发者社区> 问答> 正文

KOTLIN和GO的协程有区别么?

KOTLIN和GO的协程有区别么?

展开
收起
OSC开源社区 2024-05-13 10:39:03 13 0
1 条回答
写回答
取消 提交回答
  • 有区别。

    1. GO 的协程更多是沿着高并发 IO 密集型服务应用的场景设计的,语法更透明。
    2. Kotlin 的协程设计从标准库的角度实际上没有特定的设计场景,而在框架层做了针对不同场景的设计。
    3. Kotlin 协程更灵活,适用的场景更多,但学习曲线更陡。
    4. go 的协程好用,但相比之下,我们不能控制go routine的调度,这是由运行时决定的;go routine解决的是高并发的场景,过于深度结合场景使得对于其他场景的支持就无能为力了。
    1. go以外的协程实现多数用来简化异步程序设计,例如async await,或者用作实现延迟操作,例如懒序列,js python c#很多都是如此,go routine 无法满足这样的场景。
      而前面说的这些场景Kotlin协程都可以,我甚至在书当中封装出了lua js 风格的协程应用层api,go 风格的Channel 以及响应式的Flow 都已经在官方框架有实现了。

    我个人也非常喜欢go routine,但它的协程api从来就没有考虑更多的场景,连线程都不能控制,灵活度上自然是不够的。当然,过于灵活必然让上手变得更难,就像我们常说C语言灵活一样。

    2024-05-14 08:27:56
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载