何时在 Kotlin 中使用 Unconfined

API*_*024 6 kotlin-coroutines

我什么时候会选择使用 Dispatchers.Unconfined?何时协程应该在哪里运行并不重要?那么你让协程选择更适合的线程池?

它与 Dispatchers.Default 有什么不同?运行时默认调度程序是否始终位于定义为默认线程池的特定线程池内?

Nag*_*obi 3

无限制调度程序适用于既不消耗 CPU 时间也不更新限制于特定线程的任何共享数据(如 UI)的协程。

所以,我基本上会在非 IO、UI 或计算量大的情况下使用它:D。我认为这种情况的用例数量相当低,但我认为操作并不繁重,但出于某种原因您仍然希望它在不同的线程上运行。

这是一个有关其实际工作原理的链接。

Dispatchers.Default确实不同,它主要用于繁重的 CPU 操作。这是因为,它实际上将工作分派到线程数等于 CPU 核心数的线程池中,并且至少为 2 个。这样,开发人员在进行繁重的计算工作时可以充分利用 cpu 的能力。