gpt4 book ai didi

multithreading - 具有协程异步构造的自定义线程池

转载 作者:行者123 更新时间:2023-12-02 16:11:17 24 4
gpt4 key购买 nike

我正在使用异步结构并行执行某些任务。

ids.forEach { id -> val result = async { getResult(id) } }

在这方面我有 2 个问题。

  1. 我相信并行执行这些任务的默认线程池将有 max(1, CPUs -1) 个线程。这种理解是否正确?
  2. 我想改用自定义线程池。
val context = newFixedThreadPoolContext(15, "custom pool")

如何将此池传递给异步构造。请指教。

最佳答案

默认情况下,async() 从调用它的上下文中继承协程调度程序。如果您创建一个单线程上下文并在其中调用 async(),那么它将在相同的单线程环境中运行。

在某些情况下,调度程序可能未指定,例如如果你使用 GlobalScope.async()。在这种情况下,使用 Dispatchers.DefaultDocumentation说:

By default, the maximum number of threads used by this dispatcher is equal to the number of CPU cores, but is at least two.

async() 与您自己的调度程序一起使用非常简单:

async(context) { getResult(id) }

关于multithreading - 具有协程异步构造的自定义线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67952032/

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