kotlin 的协程怎么评价?协程真的比多线程好?

2019-01-01 02:02:12 +08:00
 insomnia1232
9288 次点击
所在节点    程序员
15 条回复
congeec
2019-01-01 02:08:14 +08:00
你一不小心问了两个很大的问题
11wangyaoda
2019-01-01 02:24:08 +08:00
coroutine 本质是上就是 callback。
ruandao
2019-01-01 02:39:58 +08:00
减少不必要的系统调度
Sparetire
2019-01-01 02:44:12 +08:00
congeec
2019-01-01 02:49:43 +08:00
http://250bpm.com/blog:141
Equivalence of State Machines and Coroutines
yanaraika
2019-01-01 04:50:03 +08:00
新语言现在基本都有协程了吧 回调地狱了解一下
Cbdy
2019-01-01 08:31:23 +08:00
所谓协程,就是用户态的线程,就是简单的状态机。然后再去和系统线程绑定既可以了
q2577
2019-01-01 10:20:46 +08:00
可以试试在当前进程的主线程里面创建多个对等线程, 然后在每个对等线程里面各创建一个子进程, 然后在每个子进程里面使用协程, 是不是晕了?
qiyuey
2019-01-01 10:33:56 +08:00
我的理解是,协程本质上就是 回调 + CPS 状态机,用以解决并发变成编写维护困难的问题,同时协程调度方面也具备优势,避免了不必要的上下文切换。
DeweyReed
2019-01-01 11:20:35 +08:00
用编译时的变换处理 callback,这样可以很直观地写顺序执行的异步代码。
每个语言都是自己的异步机制,Coroutine 就是 Kotlin 采取的方案。
janxin
2019-01-01 12:14:41 +08:00
看情况决定,对 IO 应用来说,肯定是要比纯线程好。减少系统调用,有效避免异步编程复杂度,上下文切换成本比线程低。

不过问题是谁也不是只用协程,一般都是线程+协程模式。
bluzz
2019-01-01 13:03:11 +08:00
协程无法脱离线程,协程主要就是减少线程切换和等待
pursuer
2019-01-01 13:18:10 +08:00
个人理解,事件驱动更接近计算机工作模式,性能可能好一些,但是对编写者负担比较大,协程 /线程对编写者友好一些,多线程在使用使用阻塞 IO 时对内存的消耗有点厉害,即使线程大多数时间在等待 IO,协程可以减少一些这样的情况
chrisyue
2019-01-01 16:32:12 +08:00
正好昨天总结了一下自己对 PHP 协程的理解,不知道各位大神怎么评价

https://www.chrisyue.com/what-the-hell-does-coroutine-solve.html
lynskylate
2019-01-02 07:17:04 +08:00
协程相比线程仅在 io 密集应用有显著优势,最大的优势在于进行 io 时主动进行协程切换,相比线程切换开销较小,当然还有协程上下文的储存相比线程小等等。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/522809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX