【发布时间】:2021-12-22 13:03:14
【问题描述】:
我有几个关于 kotlin 协程的问题。
-
在使用协程时可以涉及多少线程?
如果我们只使用 Dispatchers.Main,是否只会涉及一个线程(单线程)?如果我们使用 Dispatchers.IO,是否会涉及多个线程(最多 64 个线程)? -
使用 Dispatchers.Main 的用例是什么? 我读过的大多数文章都说所有 UI 相关的作品都应该出现在 Dispatchers.Main 和背景相关的作品中(比如从/to 数据库,网络请求)需要出现在 Dispatchers.IO 但我不明白 Dispatchers.Main 中存在哪些 UI 相关工作,因为 UI 相关工作并不真正需要协程(使用 Dispatchers.Main)
-
对于一些可能阻塞当前线程的工作,我们将 susepnd 函数与协程一起使用。例如,从磁盘读取数据、网络请求或高时态计算等。如果这些工作是由挂起函数执行的,当这些函数被挂起时由什么/谁负责?我认为必须无论如何都要处理这些挂起功能。会是下面负责的后台线程吗?
- 从/向数据库读取/写入数据
- 等待网络请求
- 计算高时态计算
如果我的措辞或问题不正确,请指出。
提前谢谢你。
【问题讨论】: