gpt4 book ai didi

android - 如何增加 Android 上的 Kotlin 协程 Dispatchers.IO 大小?

转载 作者:行者123 更新时间:2023-12-02 16:35:48 25 4
gpt4 key购买 nike

协程 Dispatchers.IO 上下文限制为 64 个线程。这还不足以在高并发系统中可靠地与阻塞代码交互。

Documentation states那:

Additional threads in this pool are created and are shutdown on demand. The number of threads used by this dispatcher is limited by the value of “kotlinx.coroutines.io.parallelism” (IO_PARALLELISM_PROPERTY_NAME) system property. It defaults to the limit of 64 threads or the number of cores (whichever is larger).

我想将 kotlinx.coroutines.io.parallelism 系统属性更改为其他内容。但是,如果我这样做:

adb shell "setprop kotlinx.coroutines.io.parallelism 1000"

然后我得到以下结果:

setprop: failed to set property 'kotlinx.coroutines.io.parallelism' to '1000'

此外,如果我想发布我的应用程序,那么我还需要在用户设备上更改此属性,对吧?否则该应用程序将无法运行。然而,即使假设这是可能的,据我了解,所有更改此属性的应用程序都会覆盖彼此的设置。这听起来不像是一种可靠的操作模式。

因此,我在这方面有三个问题:

  1. 文档中隐含的属性是否确实是我尝试更改的“系统属性”?
  2. 如何在未 root 的设备上为我的应用的所有用户更改此属性?
  3. 有更好的选择吗?

附注我知道如果我只使用协程而不阻塞代码,这不会成为问题(可能)。但我们假设我需要使用阻塞调用(例如遗留 Java 代码)。

最佳答案

IO_PARALLELISM_PROPERTY_NAME 并不引用 Android 系统属性,而是引用 Java 系统属性。只需在应用程序的早期添加此代码即可,例如首先在您的 Application.onCreate() 中,将其更改为 1000:

import static kotlinx.coroutines.DispatchersKt.IO_PARALLELISM_PROPERTY_NAME;

System.setProperty(IO_PARALLELISM_PROPERTY_NAME, Integer.toString(1000));

不必必须在每个设备上使用root或类似的东西来完成。它可以在任何地方工作,因为它是使用常规应用程序 API 的常规应用程序代码。

只要您在首次使用 Dispatchers.IO 之前执行此操作,您的属性更改就会应用。

关于android - 如何增加 Android 上的 Kotlin 协程 Dispatchers.IO 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58489659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com