【发布时间】:2019-10-22 01:19:39
【问题描述】:
协程Dispatchers.IO 上下文限制为 64 个线程。这还不足以可靠地与高并发系统中的阻塞代码交互。
创建此池中的其他线程并关闭 要求。此调度程序使用的线程数受限于 “kotlinx.coroutines.io.parallelism”的值 (IO_PARALLELISM_PROPERTY_NAME) 系统属性。它默认为 最多 64 个线程或内核数(以较大者为准)。
我想将kotlinx.coroutines.io.parallelism 系统属性更改为其他内容。但是,如果我这样做:
adb shell "setprop kotlinx.coroutines.io.parallelism 1000"
然后我得到以下结果:
setprop: failed to set property 'kotlinx.coroutines.io.parallelism' to '1000'
此外,如果我想发布我的应用程序,那么我还需要在用户的设备上更改此属性,对吗?否则应用程序将无法运行。但是,即使假设有可能,据我所知,所有更改此属性的应用程序都将覆盖彼此的设置。这听起来不像是一种可靠的操作模式。
所以,我在这方面有三个问题:
- 文档中隐含的属性是否确实是我尝试更改的“系统属性”?
- 如何在非 root 设备上为我的应用的所有用户更改此属性?
- 还有更好的选择吗?
附:我知道如果我只使用协程而不阻塞代码,这不会是一个问题(可能)。但是让我们假设我需要使用阻塞调用(例如遗留 Java 代码)。
【问题讨论】:
标签: android kotlin kotlin-coroutines