

























这是一个创建于 1005 天前的主题,其中的信息可能已经有所发展或是发生改变。
我还以为会像 Rust 一样把 IO 函数都用异步实现一遍,结果只是把 Job 放到 Dispatchers.IO 线程池里调度,那岂不是该堵塞的还是会堵塞,如果线程池里的所有线程都被堵塞了,剩下的 Job 不就没法执行了,又不是 Go 语言那样的有栈协程可以随时中断,无栈协程就应该用 NIO 实现高 IO 吞吐量啊
难道说 Kotlin 的协程目前的唯一作用就是让安卓同学不会把 UI 卡死吗?
1 whyrookie 2023 年 9 月 13 日Kotlin 的协程可以让异步代码写成同步的形式,防止了过多的回调,另外 Job 也是可以取消的。如果仅仅是让 Android 不会把 UI 写死,Kotlin 出现之前,Android 的 UI 也可以不卡死 |
2 kenvix 2023 年 9 月 13 日协程和异步 IO 是两回事,IO 是 JVM 的工作,kotlin 还没有解决好异步 IO 的问题 |
3 Leviathann 2023 年 9 月 13 日rust 官方也没实现一遍啊?官方甚至都只定义了接口和编译支持,连实现都没做 go 的随时中断又不是协程的特性,java 的 virtual thread 照样只能主动 yield 协程的 point 本来就是调度,或者说对计算资源的精细控制,和阻不阻塞完全是正交的关系 |
4 TArysiyehua 2023 年 9 月 13 日原文:异步函数, 答案:suspend fun aaa() = withContext {} |
5 zeni123 2023 年 9 月 13 日堵塞不堵塞和用的系统调用有关, 所以 Java Virtual Thread 把 Socket 用 epoll 重新写了... 老旧 Apache HttpClient 现在也是 event driven 了 |
6 mmdsun 2023 年 9 月 13 日解决地域回调问题,简化安卓开发。 说到操作系统异步 IO ,POSIX AIO 上实现得不够完善和高效。io_uring 又是高版本内核才支持。 Java 虚拟线程适合大部分时间被阻塞、等待 I/O 操作的任务,网络请求或磁盘读写。虚拟线程遇到阻塞 I/O 时,JVM 会将其挂起,与之关联的操作系统线程可以为其他虚拟线程提供服务。能大幅度提高 I/O 吞吐量和并发性能,Java 单机项目可以启动好几百万虚拟线程。 |
7 unco020511 2023 年 9 月 13 日起码 kotlin 协程 for JVM 是你说的这样,一个线程框架,内部原理是状态机+CPS 转换,搭配编译器插件 |
8 Parva 2023 年 9 月 13 日我感觉目的还是为了方便线程调度吧 |
9 bringyou 2023 年 9 月 13 日服务端开发的话,可以用 ktor 、okhttp 等框架,它们带的 IO 操作是可以 suspend 的,数据库操作还没很好的解法,可以试试 r2dbc |
10 lxiian 2023 年 9 月 13 日 via iPhone就是一个线程框架而已,让开发者更好的去使用线程 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。